FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
MPIParameterDealer.h
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2017.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Authors:
11  Ron Fox
12  Giordano Cerriza
13  FRIB
14  Michigan State University
15  East Lansing, MI 48824-1321
16 */
17 
21 #ifndef MPIPARAMETERDEALER_H
22 #define MPIPARAMETERDEALER_H
23 #include <stddef.h>
24 #include <DataReader.h>
25 #include <mpi.h>
26 
27 namespace frib {
28  namespace analysis {
29  class AbstractApplication;
30 
31 
68  private:
69  int m_argc;
70  char** m_argv;
71  AbstractApplication* m_pApp;
72  CDataReader* m_pReader;
73  unsigned m_nBlockSize;
74  unsigned m_nEndsLeft;
75 
76  public:
77  CMPIParameterDealer(int argc, char** argv, AbstractApplication* pApp);
78  virtual ~CMPIParameterDealer();
79  private:
81  CMPIParameterDealer& operator=(const CMPIParameterDealer& rhs);
82  int operator==(const CMPIParameterDealer& rhs);
83  int operator!=(const CMPIParameterDealer& rhs);
84  public:
85  void operator()();
86  private:
87  virtual const char* getInputFile(int argc, char** argv) const;
88  virtual unsigned getBlockSize(int argc, char** argv) const;
89 
90  size_t sendDefinitions(const void* pData);
91  size_t sendParameterDefs(const void* pData);
92  size_t sendVariableValues(const void* pData);
93  void sendData(size_t nItems, const void* pData);
94  void sendWorkItem(const void* pData);
95  void sendPassthrough(const void* pData);
96 
97  void sendAll(
98  const void* pData, MPI_Datatype type, size_t numItems, int tag
99  );
100  void sendEofs();
101  void sendEof();
102  };
103  }
104 }
105 
106 
107 #endif
Definition: AbstractApplication.h:102
Definition: DataReader.h:60
: Read data from a file and present it to the caller.
void operator()()
Definition: MPIParameterDealer.cpp:61
Definition: MPIParameterDealer.h:67
virtual ~CMPIParameterDealer()
Definition: MPIParameterDealer.cpp:52
Definition: AbstractApplication.cpp:30
CMPIParameterDealer(int argc, char **argv, AbstractApplication *pApp)
Definition: MPIParameterDealer.cpp:43