libSplash
ParallelDomainCollector.hpp
1 
23 #ifndef PARALLELDOMAINCOLLECTOR_HPP
24 #define PARALLELDOMAINCOLLECTOR_HPP
25 
26 #include "splash/domains/IParallelDomainCollector.hpp"
27 #include "splash/ParallelDataCollector.hpp"
28 
29 namespace splash
30 {
31 
36  {
37  private:
46  static std::string getExceptionString(std::string func, std::string msg,
47  const char *info);
48 
49  void writeDomainAttributes(
50  int32_t id,
51  const char *name,
52  DomDataClass dataClass,
53  const Domain localDomain,
54  const Domain globalDomain);
55 
56  public:
66  ParallelDomainCollector(MPI_Comm comm, MPI_Info info, const Dimensions topology,
67  uint32_t maxFileHandles);
68 
72  virtual ~ParallelDomainCollector();
73 
81  Domain getGlobalDomain(int32_t id,
82  const char* name) throw (DCException);
83 
91  Domain getLocalDomain(int32_t id,
92  const char* name) throw (DCException);
93 
94  DataContainer *readDomain(int32_t id,
95  const char* name,
96  const Domain requestDomain,
97  DomDataClass* dataClass,
98  bool lazyLoad = false) throw (DCException);
99 
100  void readDomainLazy(DomainData *domainData) throw (DCException);
101 
102  void writeDomain(int32_t id,
103  const CollectionType& type,
104  uint32_t ndims,
105  const Selection select,
106  const char* name,
107  const Domain localDomain,
108  const Domain globalDomain,
109  DomDataClass dataClass,
110  const void* buf) throw (DCException);
111 
112  void writeDomain(int32_t id,
113  const Dimensions globalSize,
114  const Dimensions globalOffset,
115  const CollectionType& type,
116  uint32_t ndims,
117  const Selection select,
118  const char* name,
119  const Domain globalDomain,
120  DomDataClass dataClass,
121  const void* buf) throw (DCException);
122 
123  void reserveDomain(int32_t id,
124  const Dimensions globalSize,
125  uint32_t ndims,
126  const CollectionType& type,
127  const char* name,
128  const Domain domain,
129  DomDataClass dataClass) throw (DCException);
130 
131  void reserveDomain(int32_t id,
132  const Dimensions size,
133  Dimensions *globalSize,
134  Dimensions *globalOffset,
135  uint32_t ndims,
136  const CollectionType& type,
137  const char* name,
138  const Domain domain,
139  DomDataClass dataClass) throw (DCException);
140 
141  protected:
142 
143  bool readDomainDataForRank(
144  DataContainer *dataContainer,
145  DomDataClass *dataClass,
146  int32_t id,
147  const char* name,
148  const Domain requestDomain,
149  bool lazyLoad) throw (DCException);
150 
151  void appendDomain(int32_t id,
152  const CollectionType& type,
153  size_t count,
154  const char *name,
155  const Domain localDomain,
156  const Domain globalDomain,
157  const void *buf) throw (DCException);
158 
159  void appendDomain(int32_t id,
160  const CollectionType& type,
161  size_t count,
162  size_t offset,
163  size_t striding,
164  const char *name,
165  const Domain localDomain,
166  const Domain globalDomain,
167  const void *buf) throw (DCException);
168 
169  };
170 
171 }
172 
173 #endif /* PARALLELDOMAINCOLLECTOR_HPP */
Domain getLocalDomain(int32_t id, const char *name)
Domain getGlobalDomain(int32_t id, const char *name)
void reserveDomain(int32_t id, const Dimensions globalSize, uint32_t ndims, const CollectionType &type, const char *name, const Domain domain, DomDataClass dataClass)
ParallelDomainCollector(MPI_Comm comm, MPI_Info info, const Dimensions topology, uint32_t maxFileHandles)
void readDomainLazy(DomainData *domainData)
DataContainer * readDomain(int32_t id, const char *name, const Domain requestDomain, DomDataClass *dataClass, bool lazyLoad=false)
void writeDomain(int32_t id, const CollectionType &type, uint32_t ndims, const Selection select, const char *name, const Domain localDomain, const Domain globalDomain, DomDataClass dataClass, const void *buf)