1 #ifndef UTIL_MPI_LOADER_H 2 #define UTIL_MPI_LOADER_H 11 #include <util/containers/DArray.h> 12 #include <util/containers/FArray.h> 13 #include <util/containers/DMatrix.h> 14 #include <util/mpi/MpiFileIo.h> 15 #include <util/mpi/MpiTraits.h> 42 template <
class IArchive>
61 template <
typename Data>
62 void load(Data &value);
70 template <
typename Data>
71 void load(Data *value,
int n);
79 template <
typename Data>
87 template <
typename Data,
int N>
100 template <
typename Data>
void 101 load(Data* value,
int m,
int n,
int np);
110 template <
typename Data>
119 IArchive* archivePtr_;
126 template <
typename IArchive>
128 : mpiFileIoPtr_(&mpiFileIo),
129 archivePtr_(&archive)
135 template <
typename IArchive>
136 template <
typename Data>
140 *archivePtr_ >> value;
152 template <
typename IArchive>
153 template <
typename Data>
157 for (
int i = 0; i < n; ++i) {
158 *archivePtr_ >> value[i];
171 template <
typename IArchive>
172 template <
typename Data>
177 *archivePtr_ >> array;
178 if (array.capacity() < n) {
192 template <
typename IArchive>
193 template <
typename Data,
int N>
197 for (
int i = 0; i < N; ++i) {
198 *archivePtr_ >> array[i];
211 template <
typename IArchive>
212 template <
typename Data>
218 for (i = 0; i < m; ++i) {
219 for (j = 0; j < n; ++j) {
220 *archivePtr_ >> array[i*np + j];
227 bcast<Data>(mpiFileIoPtr_->
ioCommunicator(), &(array[0]), m*np, 0);
235 template <
typename IArchive>
236 template <
typename Data>
240 *archivePtr_ >> matrix;
MpiLoader(MpiFileIo &mpiFileIo, IArchive &archive)
Constructor.
File containing preprocessor macros for error handling.
Identifies whether this processor may do file I/O.
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
MPI::Intracomm & ioCommunicator() const
Get the MPI communicator by reference.
Dynamically allocated Matrix.
Utility classes for scientific computation.
void load(Data &value)
Load and broadcast a single Data value.
bool isIoProcessor() const
Can this processor do file I/O ?
A fixed size (static) contiguous array template.
bool hasIoCommunicator() const
Does this object have an associated MPI communicator?
Dynamically allocatable contiguous array template.
Provides methods for MPI-aware loading of data from input archive.
This file contains templates for global functions send<T>, recv<T> and bcast<T>.