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>.