/usr/include/linbox/util/mpicpp.h is in liblinbox-dev 1.1.6~rc0-4.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #ifndef __MPICPP_H_
#define __MPICPP_H_
#ifndef __LINBOX_HAVE_MPI
typedef int Communicator;
#else
#include <iterator>
// problem of mpi(ch2) in C++
#undef SEEK_SET
#undef SEEK_CUR
#undef SEEK_END
#include <mpi.h>
namespace LinBox {
/* Idea: Only use ssend for send.
*/
class Communicator
{ public:
// constructors and destructor
// constructor from existing communicator
//`Communicator(MPI_Comm comm = MPI_COMM_NULL);
Communicator(MPI_Comm comm);
// MPI_initializing constructor
// When this communicator is destroyed MPI is shut down (finalized).
Communicator(int* ac, char*** av);
// copy constructor
Communicator(const Communicator& D);
~Communicator();
// accessors
int size();
int rank();
MPI_Status status();
MPI_Comm mpi_communicator();
// peer to peer communication
template < class Ptr >
void send( Ptr b, Ptr e, int dest, int tag);
template < class Ptr >
void ssend( Ptr b, Ptr e, int dest, int tag);
template < class Ptr >
void recv( Ptr b, Ptr e, int dest, int tag);
template < class X >
void send( X *b, X *e, int dest, int tag);
template < class X >
void recv( X *b, X *e, int dest, int tag);
// whole object send and recv
template < class X >
void send( X& b, int dest /*, int tag = 0 */);
template < class X >
void ssend( X& b, int dest /*, int tag = 0 */);
template < class X >
void bsend( X& b, int dest);
template < class X >
void recv( X& b, int dest /*, int tag = 0*/);
/*
template < vector < class X > >
void send( X& b, int dest );
*/
template < class X >
void buffer_attach( X b);
template < class X >
int buffer_detach( X &b, int *size);
// collective communication
template < class Ptr, class Function_object >
void reduce( Ptr bloc, Ptr eloc, Ptr bres, Function_object binop, int root);
// member access
MPI_Status get_stat();
protected:
MPI_Comm _mpi_comm; // MPI's handle for the communicator
bool _mpi_boss; // true of an MPI initializing communicator
// There is at most one initializing communicator.
MPI_Status stat; // status from most recent receive
};
}// namespace LinBox
#include "mpicpp.inl"
#endif // __LINBOX_HAVE_MPI
#endif // __MPICPP_H_
|