18 #include "alsutils/config.hpp" 22 #ifdef ALSVINN_HAVE_CUDA 23 #include <thrust/host_vector.h> 41 static RequestPtr
isend(
const Data& data,
int count, MPI_Datatype datatype,
46 static RequestPtr
ireceive(Data& receiveBuffer,
int count,
47 MPI_Datatype datatype,
59 MPI_Request request{NULL};
66 MPI_Datatype datatype,
68 std::shared_ptr<Request> requestPointer(
new Request());
71 MPI_Isend((
void*)data.getPointer(), count, datatype, destination, tag,
72 configuration.getCommunicator(),
73 &requestPointer->request);
75 return requestPointer;
80 MPI_Datatype datatype,
82 std::shared_ptr<Request> requestPointer(
new Request());
85 MPI_Irecv((
void*)receiveBuffer.getPointer(), count, datatype, source, tag,
86 configuration.getCommunicator(),
87 &requestPointer->request);
89 return requestPointer;
93 #ifdef ALSVINN_HAVE_CUDA 95 inline RequestPtr
Request::isend(
const thrust::host_vector<real>& data,
96 int count, MPI_Datatype datatype,
98 std::shared_ptr<Request> requestPointer(
new Request());
101 MPI_Isend((
void*)data.data(), count, datatype, destination, tag,
102 configuration.getCommunicator(),
103 &requestPointer->request);
105 return requestPointer;
110 int count, MPI_Datatype datatype,
112 std::shared_ptr<Request> requestPointer(
new Request());
115 MPI_Irecv((
void*)receiveBuffer.data(), count, datatype, source, tag,
116 configuration.getCommunicator(),
117 &requestPointer->request);
119 return requestPointer;
static RequestPtr ireceive(Data &receiveBuffer, int count, MPI_Datatype datatype, int source, int tag, Configuration configuration)
Maps to MPI_Irecv. See http://www.mpich.org/static/docs/v3.1/www3/MPI_Irecv.html. ...
Definition: Request.hpp:79
~Request()
Definition: Request.cpp:32
alsfvm::shared_ptr< Request > RequestPtr
Definition: Request.hpp:37
Request()
Singleton.
Definition: Request.cpp:24
Definition: Configuration.hpp:50
static RequestPtr isend(const Data &data, int count, MPI_Datatype datatype, int destination, int tag, Configuration &configuration)
Maps to MPI_Isend. See http://www.mpich.org/static/docs/v3.1/www3/MPI_Isend.html. ...
Definition: Request.hpp:65
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
Definition: Request.hpp:32
void wait()
Wait for the request to finish, maps to MPI_Wait.
Definition: Request.cpp:28