X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/68f707462521f974a8839675ab66e3527125ccbc..b01ad897fbf1aadba693f0d49045ea090bde42ab:/src/smpi/colls/smpi_coll.cpp diff --git a/src/smpi/colls/smpi_coll.cpp b/src/smpi/colls/smpi_coll.cpp index 36eca5fc52..4f16a569a0 100644 --- a/src/smpi/colls/smpi_coll.cpp +++ b/src/smpi/colls/smpi_coll.cpp @@ -115,7 +115,6 @@ void Colls::set_collectives(){ } } - //Implementations of the single algorith collectives int Colls::gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, @@ -123,16 +122,7 @@ int Colls::gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *re { MPI_Request request; Colls::igatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm, &request); - MPI_Request* requests = request->get_nbc_requests(); - int count = request->get_nbc_requests_size(); - Request::waitall(count, requests, MPI_STATUS_IGNORE); - for (int i = 0; i < count; i++) { - if(requests[i]!=MPI_REQUEST_NULL) - Request::unref(&requests[i]); - } - delete[] requests; - Request::unref(&request); - return MPI_SUCCESS; + return Request::wait(&request, MPI_STATUS_IGNORE); } @@ -141,16 +131,7 @@ int Colls::scatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype se { MPI_Request request; Colls::iscatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm, &request); - MPI_Request* requests = request->get_nbc_requests(); - int count = request->get_nbc_requests_size(); - Request::waitall(count, requests, MPI_STATUS_IGNORE); - for (int dst = 0; dst < count; dst++) { - if(requests[dst]!=MPI_REQUEST_NULL) - Request::unref(&requests[dst]); - } - delete[] requests; - Request::unref(&request); - return MPI_SUCCESS; + return Request::wait(&request, MPI_STATUS_IGNORE); } @@ -286,18 +267,8 @@ int Colls::alltoallw(void *sendbuf, int *sendcounts, int *senddisps, MPI_Datatyp void *recvbuf, int *recvcounts, int *recvdisps, MPI_Datatype* recvtypes, MPI_Comm comm) { MPI_Request request; - int err = Colls::ialltoallw(sendbuf, sendcounts, senddisps, sendtypes, recvbuf, recvcounts, recvdisps, recvtypes, comm, &request); - MPI_Request* requests = request->get_nbc_requests(); - int count = request->get_nbc_requests_size(); - XBT_DEBUG("<%d> wait for %d requests", comm->rank(), count); - Request::waitall(count, requests, MPI_STATUS_IGNORE); - for (int i = 0; i < count; i++) { - if(requests[i]!=MPI_REQUEST_NULL) - Request::unref(&requests[i]); - } - delete[] requests; - Request::unref(&request); - return err; + Colls::ialltoallw(sendbuf, sendcounts, senddisps, sendtypes, recvbuf, recvcounts, recvdisps, recvtypes, comm, &request); + return Request::wait(&request, MPI_STATUS_IGNORE); } }