MARQOVScheduler
Marqov provides a multithreading scheduler with optional support for MPI.
-
template<class Sim>
class CXX11Scheduler The Marqov internal scheduler.
It encapsulates the creation of simulations, the parallel tempering and the distribution across nodes/cores.
- Template Parameters:
Sim – a fully specified Marqov type
Public Functions
-
template<typename ParamType, typename Callable = decltype(defaultfilter)>
inline void createSimfromParameter(ParamType &p, Callable filter = defaultfilter) Create a full simulation from a parameter.
This gives us the parameters of a simulation and we are responsible for setting everything up. It has a template parameter, but of course all used parameters have to resolve to the same underlying MarqovType.
- Parameters:
p – The full set of parameters that are relevant for your problem.
filter – A filter that can be applied before the actual creation of MARQOV.
-
inline void enqueuesim(Sim &sim, bool warmup = true)
This registers an already allocated simulation with us.
DEPRECATED: Untested code path as of now.
- Parameters:
sim – A reference to the sim that already exists.
warmup – a boolean to select whether we require warmup.
-
inline void setloglevel(int l)
Set the log verbosity.
- Parameters:
l – the loglevel.
-
inline void start()
Start the simulations! GoGoGo…!
-
inline CXX11Scheduler(int maxptsteps = 1, uint nthreads = 0, int mid = 0)
Construct Scheduler.
- Parameters:
maxptsteps – How many parallel tempering steps do we do. Defaults to just a single PTstep and hence disables it.
nthreads – how many threads should be used. If not specified defaults to what is reported by the OS.
id – An integer id. This is used by MPI to pass down the rank.
-
inline ~CXX11Scheduler()
Tidy up scheduler.
This frees all resources and waits until all threads have finished.
-
inline CXX11Scheduler(CXX11Scheduler &&rhs)
Move Constructor.
The other object over whose resources we take ownership. Mutexes are a bit odd here. We don’t reuse the other mutexes but use and create our own.
- Parameters:
rhs – the other object.
If MARQOV is compiled with support for MPI the MPI scheduler is utilized.
-
template<class Sim>
class MPIScheduler Public Functions
-
template<typename ParamType, typename Callable = decltype(defaultfilter)>
inline void createSimfromParameter(ParamType &p, Callable filter = defaultfilter) This gives us the parameters of a simulation and we are responsible for setting everything up.
It has a template parameter, but of course all used parameters have to resolve to the same underlying MarqovType. FIXME: It is expected that all MPI ranks execute the same code until here!!! That makes it easier to have valid data on every node…
- Parameters:
p – The full set of parameters that are relevant for your Problem
filter – A filter that can be applied before the actual creation of MARQOV
-
inline void start()
Start execution on all nodes.
-
inline MPIScheduler(int maxptsteps = 1, uint nthreads = 0)
Construct MPI Scheduler.
We expect MPI to be initialized beforehand. The user should feel that he is writing MPI code.
- Parameters:
maxptsteps – How many parallel tempering steps do we do
nthreads – how many threads should be used. If not specified defaults to what is reported by the OS.
-
inline MPIScheduler(MPIScheduler &&rhs)
Move Copy Constructor.
The other object over whose resources we take ownership.
- Parameters:
rhs – the other object
-
template<typename ParamType, typename Callable = decltype(defaultfilter)>