Xmipp  v3.23.11-Nereus
Protected Member Functions | List of all members
BasicMpiMetadataProgram< BASE_CLASS > Class Template Reference

#include <xmipp_mpi.h>

Inheritance diagram for BasicMpiMetadataProgram< BASE_CLASS >:
Inheritance graph
[legend]
Collaboration diagram for BasicMpiMetadataProgram< BASE_CLASS >:
Collaboration graph
[legend]

Protected Member Functions

void defineParams () override
 
void readParams () override
 
void preProcess () override
 
void startProcessing ()
 
void showProgress ()
 
bool getImageToProcess (size_t &objId, size_t &objIndex) override
 
void finishProcessing () override
 
void wait ()
 
- Protected Member Functions inherited from XmippMpiProgram
void setNode (const std::shared_ptr< MpiNode > &node)
 
- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 

Additional Inherited Members

- Public Member Functions inherited from MpiMetadataProgram
 MpiMetadataProgram ()
 
 MpiMetadataProgram (const MpiMetadataProgram &)=delete
 
 MpiMetadataProgram (const MpiMetadataProgram &&)=delete
 
 ~MpiMetadataProgram ()
 
MpiMetadataProgramoperator= (const MpiMetadataProgram &)=delete
 
MpiMetadataProgramoperator= (const MpiMetadataProgram &&)=delete
 
void read (int argc, char **argv)
 
void createTaskDistributor (MetaData &mdIn, size_t blockSize=0)
 
bool getTaskToProcess (size_t &objId, size_t &objIndex)
 
- Public Member Functions inherited from XmippMpiProgram
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 ()
 
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 ()
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 
- Protected Attributes inherited from MpiMetadataProgram
int blockSize
 
std::vector< size_t > imgsId
 
MpiTaskDistributordistributor =nullptr
 
size_t first
 
size_t last
 
- Protected Attributes inherited from XmippMpiProgram
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
 

Detailed Description

template<typename BASE_CLASS>
class BasicMpiMetadataProgram< BASE_CLASS >

Macro to define a simple MPI parallelization of a program based on XmippMetaDataProgram

Definition at line 222 of file xmipp_mpi.h.

Member Function Documentation

◆ defineParams()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::defineParams ( )
inlineoverrideprotectedvirtual

Function in which the param of each Program are defined.

Reimplemented from MpiMetadataProgram.

Definition at line 224 of file xmipp_mpi.h.

224  {
225  BASE_CLASS::defineParams();
227  }

◆ finishProcessing()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::finishProcessing ( )
inlineoverrideprotectedvirtual

finishProcessing

Reimplemented from MpiMetadataProgram.

Definition at line 261 of file xmipp_mpi.h.

261  {
262  node->gatherMetadatas(this->getOutputMd(), BASE_CLASS::fn_out);
263  MetaDataVec MDaux;
264  MDaux.sort(this->getOutputMd(), MDL_GATHER_ID);
265  MDaux.removeLabel(MDL_GATHER_ID);
266  this->getOutputMd() = MDaux;
267  if (node->isMaster())
268  BASE_CLASS::finishProcessing();
269  }
void sort(const MetaDataVec &MDin, const MDLabel sortLabel, bool asc=true, int limit=-1, int offset=0)
bool removeLabel(const MDLabel label) override
std::shared_ptr< MpiNode > node
Definition: xmipp_mpi.h:164

◆ getImageToProcess()

template<typename BASE_CLASS>
bool BasicMpiMetadataProgram< BASE_CLASS >::getImageToProcess ( size_t &  objId,
size_t &  objIndex 
)
inlineoverrideprotected

Definition at line 257 of file xmipp_mpi.h.

257  {
258  return getTaskToProcess(objId, objIndex);
259  }
bool getTaskToProcess(size_t &objId, size_t &objIndex)
Definition: xmipp_mpi.cpp:316

◆ preProcess()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::preProcess ( )
inlineoverrideprotectedvirtual

Preprocess

Reimplemented from MpiMetadataProgram.

Definition at line 234 of file xmipp_mpi.h.

234  {
235  BASE_CLASS::preProcess();
236  MetaData &mdIn = *this->getInputMd();
237  mdIn.addLabel(MDL_GATHER_ID);
238  mdIn.fillLinear(MDL_GATHER_ID, 1, 1);
240  }
void createTaskDistributor(MetaData &mdIn, size_t blockSize=0)
Definition: xmipp_mpi.cpp:302
virtual bool addLabel(const MDLabel label, int pos=-1)=0
virtual void fillLinear(MDLabel label, double initial, double step)=0

◆ readParams()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::readParams ( )
inlineoverrideprotectedvirtual

Function in which each program will read parameters that it need. If some error occurs the usage will be printed out.

Reimplemented from MpiMetadataProgram.

Definition at line 229 of file xmipp_mpi.h.

229  {
231  BASE_CLASS::readParams();
232  }

◆ showProgress()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::showProgress ( )
inlineprotected

Definition at line 250 of file xmipp_mpi.h.

250  {
251  if (node->rank == 1) {
252  BASE_CLASS::time_bar_done = first + 1;
253  BASE_CLASS::showProgress();
254  }
255  }
std::shared_ptr< MpiNode > node
Definition: xmipp_mpi.h:164

◆ startProcessing()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::startProcessing ( )
inlineprotected

Definition at line 242 of file xmipp_mpi.h.

242  {
243  if (node->rank == 1) {
244  verbose = 1;
245  BASE_CLASS::startProcessing();
246  }
247  node->barrierWait();
248  }
std::shared_ptr< MpiNode > node
Definition: xmipp_mpi.h:164
int verbose
Verbosity level.

◆ wait()

template<typename BASE_CLASS>
void BasicMpiMetadataProgram< BASE_CLASS >::wait ( )
inlineprotected

Definition at line 271 of file xmipp_mpi.h.

271 { distributor->wait(); }
MpiTaskDistributor * distributor
Definition: xmipp_mpi.h:190

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