PlasCom2  1.0
XPACC Multi-physics simluation application
MPIGlobal.H
Go to the documentation of this file.
1 #ifndef __MPI_GLOBAL_H__
5 #define __MPI_GLOBAL_H__
6 #include "Global.H"
7 #include "COMM.H"
8 
9 namespace ix {
10  namespace global {
11 
15 
16 
17  class mpiglobal : public parallelglobal
18  {
19 
20  public:
22  parallelglobal()
23  {
24  profilingBarrier = false;
25  };
26 
27  mpiglobal(parallelglobal &inglob) :
28  parallelglobal(inglob)
29  {
30  profilingBarrier = false;
31  };
32 
33  mpiglobal(mpiglobal &pglobin) :
34  parallelglobal(pglobin)
35  {
37  profilingBarrier = false;
38 
39  };
40  mpiglobal(const std::string &name) :
41  parallelglobal(name)
42  {
43  // Init(name);
44  profilingBarrier = false;
45  };
46  mpiglobal(const std::string &name,unsigned int id) :
47  parallelglobal(name,id)
48  {
49  // Init(name);
50  profilingBarrier = false;
51  };
52  mpiglobal(int narg,char **args) :
53  parallelglobal(narg,args)
54  {
55  int result = Init(narg,args);
56  assert(result == 0);
57  profilingBarrier = false;
58 
59  };
60  mpiglobal(int narg,char **args,CommunicatorType &incomm) :
61  parallelglobal(narg,args)
62  {
63  int result = Init(util::stripdirs(args[0]),incomm);
64  assert(result == 0);
65  profilingBarrier = false;
66  };
67  mpiglobal(int narg,char **args,MPI_Comm &incomm) :
68  parallelglobal(narg,args)
69  {
70  ix::comm::CommunicatorObject myComm(incomm);
71  int result = parallelglobal::Init(util::stripdirs(args[0]),myComm);
72  assert(result == 0);
73  profilingBarrier = false;
74  };
75  int NumProc()
76  {
77  return(globalCommunicator.Size());
78  };
79  };
80 
81 
82  template<typename ComLineType>
83  class mpiprogram : public mpiglobal
84  {
85  protected:
86  ComLineType _command_line;
87  public:
89  mpiglobal()
90  {};
91  mpiprogram(mpiglobal &inglob) :
92  mpiglobal(inglob){};
93  mpiprogram(ComLineType &incom) :
94  mpiglobal(),_command_line(incom)
95  {};
96  mpiprogram(int narg,char **args) :
97  mpiglobal(narg,args)
98  {
99  _command_line.Record((const char **)args);
100  // SetName(_command_line.ProgramName());
101  };
102  mpiprogram(ComLineType &incom,mpiglobal &inglob) :
103  mpiglobal(inglob), _command_line(incom) {};
104  mpiprogram(int narg,char **args,mpiglobal &inglob) :
105  mpiglobal(inglob)
106  {
107  _command_line.Record((const char **)args);
108  // SetName(_command_line.ProgramName());
109  };
110  mpiprogram(int narg,char **args,MPI_Comm &inComm) :
111  mpiglobal(narg,args,inComm)
112  {
113  _command_line.Record((const char **)args);
114  };
115  virtual inline int Initialize()
116  {
117  _command_line.Initialize();
118  return(_command_line.ProcessOptions());
119  };
120  ComLineType &CommandLine() {return _command_line; };
121  virtual inline int Run(){return(0);};
122  virtual inline int Finalize(){return(mpiglobal::Finalize());};
123  virtual ~mpiprogram(){};
124  };
125 
126  }
127 }
128 #endif
virtual int Initialize()
Definition: MPIGlobal.H:115
mpiprogram(int narg, char **args, mpiglobal &inglob)
Definition: MPIGlobal.H:104
Performance profiling object.
Definition: Profiler.H:398
ComLineType _command_line
Definition: MPIGlobal.H:86
mpiglobal(const std::string &name)
Definition: MPIGlobal.H:40
Communication utilities.
Defines MPI-specific parallel global and program classes.
ParallelGlobalObj< CommunicatorType, std::string, int, ProfilerType > parallelglobal
Definition: MPIGlobal.H:14
virtual int Finalize()
Finalizes the global object, and it&#39;s profiler object.
Definition: MPIGlobal.H:122
mpiglobal(mpiglobal &pglobin)
Definition: MPIGlobal.H:33
profiler::ProfilerObj ProfilerType
Definition: MPIGlobal.H:13
virtual int Init(const std::string &name, CommunicatorType &incomm)
Definition: Global.H:578
mpiprogram(ComLineType &incom)
Definition: MPIGlobal.H:93
mpiglobal(int narg, char **args, MPI_Comm &incomm)
Definition: MPIGlobal.H:67
mpiglobal(int narg, char **args, CommunicatorType &incomm)
Definition: MPIGlobal.H:60
mpiglobal(int narg, char **args)
Definition: MPIGlobal.H:52
comm::CommunicatorObject CommunicatorType
Definition: MPIGlobal.H:12
mpiprogram(ComLineType &incom, mpiglobal &inglob)
Definition: MPIGlobal.H:102
mpiprogram(int narg, char **args)
Definition: MPIGlobal.H:96
Main encapsulation of MPI.
Definition: COMM.H:62
int Initialize(CommunicatorObject &incomm)
Definition: COMM.C:310
const std::string stripdirs(const std::string &pname)
Strip absolute path.
Base global object header.
ComLineType & CommandLine()
Definition: MPIGlobal.H:120
CommunicatorType globalCommunicator
Definition: Global.H:531
mpiprogram(int narg, char **args, MPI_Comm &inComm)
Definition: MPIGlobal.H:110
virtual int Finalize()
Finalizes the global object, and it&#39;s profiler object.
Definition: Global.H:622
virtual int Run()
Definition: MPIGlobal.H:121
mpiprogram(mpiglobal &inglob)
Definition: MPIGlobal.H:91
mpiglobal(const std::string &name, unsigned int id)
Definition: MPIGlobal.H:46
mpiglobal(parallelglobal &inglob)
Definition: MPIGlobal.H:27