Gromacs  2020.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Functions
#include <memory>
#include <string>
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/mpiinplacebuffers.h"
+ Include dependency graph for multisim.h:
+ This graph shows which files directly or indirectly include this file:

Description

Declares the multi-simulation support routines.

Author
Mark Abraham mark..nosp@m.j.ab.nosp@m.raham.nosp@m.@gma.nosp@m.il.co.nosp@m.m

Classes

struct  gmx_multisim_t
 Coordinate multi-simulation resources for mdrun. More...
 

Macros

#define gmx_sum_sim   gmx_sumf_sim
 Convenience define for sum of reals.
 

Functions

void gmx_sumi_sim (int nr, int r[], const gmx_multisim_t *ms)
 Calculate the sum over the simulations of an array of ints.
 
void gmx_sumli_sim (int nr, int64_t r[], const gmx_multisim_t *ms)
 Calculate the sum over the simulations of an array of large ints.
 
void gmx_sumf_sim (int nr, float r[], const gmx_multisim_t *ms)
 Calculate the sum over the simulations of an array of floats.
 
void gmx_sumd_sim (int nr, double r[], const gmx_multisim_t *ms)
 Calculate the sum over the simulations of an array of doubles.
 
std::vector< int > gatherIntFromMultiSimulation (const gmx_multisim_t *ms, int localValue)
 Return a vector containing the gathered values of localValue found on the master rank of each simulation.
 
void check_multi_int (FILE *log, const gmx_multisim_t *ms, int val, const char *name, gmx_bool bQuiet)
 Check if val is the same on all simulations for a mdrun -multidir run. More...
 
void check_multi_int64 (FILE *log, const gmx_multisim_t *ms, int64_t val, const char *name, gmx_bool bQuiet)
 Check if val is the same on all simulations for a mdrun -multidir run. More...
 
static bool isMultiSim (const gmx_multisim_t *ms)
 Are we doing multiple independent simulations?
 
bool findIsSimulationMasterRank (const gmx_multisim_t *ms, MPI_Comm communicator)
 Return whether this rank is the master rank of a simulation, using ms (if it is valid) and otherwise communicator.
 
bool isMasterSim (const gmx_multisim_t *ms)
 Are we the master simulation of a possible multi-simulation?
 
bool isMasterSimMasterRank (const gmx_multisim_t *ms, bool isMaster)
 Are we the master rank (of the master simulation, for a multi-sim). More...
 

Function Documentation

void check_multi_int ( FILE *  log,
const gmx_multisim_t ms,
int  val,
const char *  name,
gmx_bool  bQuiet 
)

Check if val is the same on all simulations for a mdrun -multidir run.

The string name is used to print to the log file and in a fatal error if the val's don't match. If bQuiet is true and the check passes, no output is written.

void check_multi_int64 ( FILE *  log,
const gmx_multisim_t ms,
int64_t  val,
const char *  name,
gmx_bool  bQuiet 
)

Check if val is the same on all simulations for a mdrun -multidir run.

The string name is used to print to the log file and in a fatal error if the val's don't match. If bQuiet is true and the check passes, no output is written.

bool isMasterSimMasterRank ( const gmx_multisim_t ms,
bool  isMaster 
)

Are we the master rank (of the master simulation, for a multi-sim).

This rank prints the remaining run time etc.