Changeset View
Changeset View
Standalone View
Standalone View
intern/mantaflow/intern/manta_pp/omp/timing.h
- This file was added.
| // DO NOT EDIT ! | |||||
| // This file is generated using the MantaFlow preprocessor (prep generate). | |||||
| #line 1 "/Users/sebbas/Developer/Mantaflow/mantaflowDevelop/mantaflowgit/source/timing.h" | |||||
| /****************************************************************************** | |||||
| * | |||||
| * MantaFlow fluid solver framework | |||||
| * Copyright 2011 Tobias Pfaff, Nils Thuerey | |||||
| * | |||||
| * This program is free software, distributed under the terms of the | |||||
| * Apache License, Version 2.0 | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Plugin timing | |||||
| * | |||||
| ******************************************************************************/ | |||||
| #ifndef _TIMING_H | |||||
| #define _TIMING_H | |||||
| #include "manta.h" | |||||
| #include <map> | |||||
| namespace Manta { | |||||
| class TimingData { | |||||
| private: | |||||
| TimingData(); | |||||
| public: | |||||
| static TimingData& instance() { static TimingData a; return a; } | |||||
| void print(); | |||||
| void saveMean(const std::string& filename); | |||||
| void start(FluidSolver* parent, const std::string& name); | |||||
| void stop(FluidSolver* parent, const std::string& name); | |||||
| protected: | |||||
| void step(); | |||||
| struct TimingSet { | |||||
| TimingSet() : num(0),updated(false) { cur.clear(); total.clear(); } | |||||
| MuTime cur, total; | |||||
| int num; | |||||
| bool updated; | |||||
| std::string solver; | |||||
| }; | |||||
| bool updated; | |||||
| int num; | |||||
| MuTime mPluginTimer; | |||||
| std::string mLastPlugin; | |||||
| std::map<std::string, std::vector<TimingSet> > mData; | |||||
| }; | |||||
| // Python interface | |||||
| class Timings : public PbClass {public: | |||||
| Timings() :PbClass(0){} static int _W_0 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) { PbClass* obj = Pb::objFromPy(_self); if (obj) delete obj; try { PbArgs _args(_linargs, _kwds); bool noTiming = _args.getOpt<bool>("notiming", -1, 0); pbPreparePlugin(0, "Timings::Timings" , !noTiming ); { ArgLocker _lock; obj = new Timings(); obj->registerObject(_self, &_args); _args.check(); } pbFinalizePlugin(obj->getParent(),"Timings::Timings" , !noTiming ); return 0; } catch(std::exception& e) { pbSetError("Timings::Timings",e.what()); return -1; } } | |||||
| void display() { TimingData::instance().print(); } static PyObject* _W_1 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) { try { PbArgs _args(_linargs, _kwds); Timings* pbo = dynamic_cast<Timings*>(Pb::objFromPy(_self)); bool noTiming = _args.getOpt<bool>("notiming", -1, 0); pbPreparePlugin(pbo->getParent(), "Timings::display" , !noTiming); PyObject *_retval = 0; { ArgLocker _lock; pbo->_args.copy(_args); _retval = getPyNone(); pbo->display(); pbo->_args.check(); } pbFinalizePlugin(pbo->getParent(),"Timings::display" , !noTiming); return _retval; } catch(std::exception& e) { pbSetError("Timings::display",e.what()); return 0; } } void saveMean(std::string file) { TimingData::instance().saveMean(file); } static PyObject* _W_2 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) { try { PbArgs _args(_linargs, _kwds); Timings* pbo = dynamic_cast<Timings*>(Pb::objFromPy(_self)); bool noTiming = _args.getOpt<bool>("notiming", -1, 0); pbPreparePlugin(pbo->getParent(), "Timings::saveMean" , !noTiming); PyObject *_retval = 0; { ArgLocker _lock; std::string file = _args.get<std::string >("file",0,&_lock); pbo->_args.copy(_args); _retval = getPyNone(); pbo->saveMean(file); pbo->_args.check(); } pbFinalizePlugin(pbo->getParent(),"Timings::saveMean" , !noTiming); return _retval; } catch(std::exception& e) { pbSetError("Timings::saveMean",e.what()); return 0; } } public: PbArgs _args; } | |||||
| #define _C_Timings | |||||
| ; | |||||
| } | |||||
| #endif | |||||