Xmipp  v3.23.11-Nereus
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
XmippMpiProgram Class Reference

#include <xmipp_mpi.h>

Inheritance diagram for XmippMpiProgram:
Inheritance graph
[legend]
Collaboration diagram for XmippMpiProgram:
Collaboration graph
[legend]

Public Member Functions

void read (int argc, char **argv)
 
virtual int tryRun ()
 
- Public Member Functions inherited from XmippProgram
const char * getParam (const char *param, int arg=0)
 
const char * getParam (const char *param, const char *subparam, int arg=0)
 
int getIntParam (const char *param, int arg=0)
 
int getIntParam (const char *param, const char *subparam, int arg=0)
 
double getDoubleParam (const char *param, int arg=0)
 
double getDoubleParam (const char *param, const char *subparam, int arg=0)
 
float getFloatParam (const char *param, int arg=0)
 
float getFloatParam (const char *param, const char *subparam, int arg=0)
 
void getListParam (const char *param, StringVector &list)
 
int getCountParam (const char *param)
 
bool checkParam (const char *param)
 
bool existsParam (const char *param)
 
void addParamsLine (const String &line)
 
void addParamsLine (const char *line)
 
ParamDefgetParamDef (const char *param) const
 
virtual void run ()
 
virtual void quit (int exit_code=0) const
 
void initProgress (size_t total, size_t stepBin=60)
 
void setProgress (size_t value=0)
 
void endProgress ()
 
void processDefaultComment (const char *param, const char *left)
 
void setDefaultComment (const char *param, const char *comment)
 
virtual void initComments ()
 
virtual void defineParams ()
 
virtual void readParams ()
 
void setProgramName (const char *name)
 
void addUsageLine (const char *line, bool verbatim=false)
 
void clearUsage ()
 
void addExampleLine (const char *example, bool verbatim=true)
 
void addSeeAlsoLine (const char *seeAlso)
 
void addKeywords (const char *keywords)
 
const char * name () const
 
virtual void usage (int verb=0) const
 
virtual void usage (const String &param, int verb=2)
 
int version () const
 
virtual void show () const
 
virtual void read (int argc, const char **argv, bool reportErrors=true)
 
virtual void read (int argc, char **argv, bool reportErrors=true)
 
void read (const String &argumentsLine)
 
 XmippProgram ()
 
 XmippProgram (int argc, const char **argv)
 
virtual ~XmippProgram ()
 

Protected Member Functions

void setNode (const std::shared_ptr< MpiNode > &node)
 
- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 

Protected Attributes

std::shared_ptr< MpiNodenode
 
size_t nProcs
 
size_t numberOfJobs
 
MPI_Status status
 
- Protected Attributes inherited from XmippProgram
int errorCode
 
ProgramDefprogDef
 Program definition and arguments parser. More...
 
std::map< String, CommentListdefaultComments
 
int argc
 Original command line arguments. More...
 
const char ** argv
 

Additional Inherited Members

- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Detailed Description

This class represent an Xmipp MPI Program. It includes the basic MPI functionalities to the programs, like an mpinode, a mutex...

To be compatible with inheritance multiple, the BaseXmippProgram must be declared with XmippProgramm as virtual.

class BaseProgram: public virtual XmippProgram {};
class BaseMpiProgram: public BaseProgram, public XmippMpiProgram {};

Definition at line 160 of file xmipp_mpi.h.

Member Function Documentation

◆ read()

void XmippMpiProgram::read ( int  argc,
char **  argv 
)

Read MPI params from command line

Definition at line 240 of file xmipp_mpi.cpp.

241 {
242  errorCode = 0; //suppose no errors
243 
244  if (node == nullptr)
245  {
246  node = std::shared_ptr<MpiNode>(new MpiNode(argc, argv));
247  nProcs = node->size;
248 
249  if (!node->isMaster())
250  verbose = false;
251  }
252 
253  XmippProgram::read(argc, (const char **)argv);
254 }
virtual void read(int argc, const char **argv, bool reportErrors=true)
int argc
Original command line arguments.
Definition: xmipp_program.h:86
std::shared_ptr< MpiNode > node
Definition: xmipp_mpi.h:164
const char ** argv
Definition: xmipp_program.h:87
int verbose
Verbosity level.

◆ setNode()

void XmippMpiProgram::setNode ( const std::shared_ptr< MpiNode > &  node)
protected

Provide a node when calling from another MPI program

Definition at line 256 of file xmipp_mpi.cpp.

257 {
258  this->node = node;
259  verbose = node->isMaster();
260 }
std::shared_ptr< MpiNode > node
Definition: xmipp_mpi.h:164
int verbose
Verbosity level.

◆ tryRun()

int XmippMpiProgram::tryRun ( )
virtual

Call the run function inside a try/catch block sending an abort signal to the rest of mpi nodes.

Reimplemented from XmippProgram.

Definition at line 262 of file xmipp_mpi.cpp.

263 {
264  try
265  {
266  if (doRun)
267  this->run();
268  }
269  catch (XmippError &xe)
270  {
271  std::cerr << xe.what();
272  errorCode = xe.__errno;
273  MPI_Abort(MPI_COMM_WORLD, xe.__errno);
274  }
275  return errorCode;
276 }
virtual void run()
ErrorType __errno
Definition: xmipp_error.h:227

Member Data Documentation

◆ node

std::shared_ptr<MpiNode> XmippMpiProgram::node
protected

Mpi node

Definition at line 164 of file xmipp_mpi.h.

◆ nProcs

size_t XmippMpiProgram::nProcs
protected

Number of Processors

Definition at line 166 of file xmipp_mpi.h.

◆ numberOfJobs

size_t XmippMpiProgram::numberOfJobs
protected

Number of independent MPI jobs

Definition at line 168 of file xmipp_mpi.h.

◆ status

MPI_Status XmippMpiProgram::status
protected

status after an MPI call

Definition at line 170 of file xmipp_mpi.h.


The documentation for this class was generated from the following files: