X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FParaMEDMEM%2FMPIAccessDEC.cxx;h=f6bd1732575d8c577b364d029b0278151df4aa5e;hb=740f93fb5c29f8a2b5439f25381c0963d854272e;hp=f88fc22a0c1100546bb56393c1acf1a9cb46d307;hpb=1e36a6710aab710674e20fbd89f6a9a8f238c023;p=tools%2Fmedcoupling.git diff --git a/src/ParaMEDMEM/MPIAccessDEC.cxx b/src/ParaMEDMEM/MPIAccessDEC.cxx index f88fc22a0..f6bd17325 100644 --- a/src/ParaMEDMEM/MPIAccessDEC.cxx +++ b/src/ParaMEDMEM/MPIAccessDEC.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -152,6 +152,11 @@ namespace MEDCoupling sts = _MPI_access->ISend( &((int *) sendbuf)[offset] , sendcount , sendtype , target , SendRequestId ) ; } + else if ( sendtype == MPI_LONG ) + { + sts = _MPI_access->ISend( &((long *) sendbuf)[offset] , sendcount , sendtype , + target , SendRequestId ) ; + } else { sts = _MPI_access->ISend( &((double *) sendbuf)[offset] , sendcount , sendtype , @@ -165,6 +170,11 @@ namespace MEDCoupling sts = _MPI_access->send( &((int *) sendbuf)[offset] , sendcount , sendtype , target , SendRequestId ) ; } + else if ( sendtype == MPI_LONG ) + { + sts = _MPI_access->send( &((long *) sendbuf)[offset] , sendcount , sendtype , + target , SendRequestId ) ; + } else { sts = _MPI_access->send( &((double *) sendbuf)[offset] , sendcount , sendtype , @@ -192,6 +202,11 @@ namespace MEDCoupling sts = _MPI_access->IRecv( &((int *) recvbuf)[offset] , recvcount , recvtype , target , RecvRequestId ) ; } + else if ( recvtype == MPI_LONG ) + { + sts = _MPI_access->IRecv( &((long *) recvbuf)[offset] , recvcount , recvtype , + target , RecvRequestId ) ; + } else { sts = _MPI_access->IRecv( &((double *) recvbuf)[offset] , recvcount , recvtype , @@ -205,6 +220,11 @@ namespace MEDCoupling sts = _MPI_access->recv( &((int *) recvbuf)[offset] , recvcount , recvtype , target , RecvRequestId ) ; } + else if ( recvtype == MPI_LONG ) + { + sts = _MPI_access->recv( &((long *) recvbuf)[offset] , recvcount , recvtype , + target , RecvRequestId ) ; + } else { sts = _MPI_access->recv( &((double *) recvbuf)[offset] , recvcount , recvtype , @@ -441,12 +461,12 @@ namespace MEDCoupling . We assume that buffers are allocated with a new double[]. so a delete [] is done. - . The structure SendBuffStruct permit to keep the adress of the buffer + . The structure SendBuffStruct permit to keep the address of the buffer and to manage a reference counter of that buffer. It contains also MPI_Datatype for the delete [] (double *) ... when the counter is null. - . The map _MapOfSendBuffers etablish the correspondance between each + . The map _MapOfSendBuffers establish the correspondence between each RequestId given by a MPI_Access->ISend(...) and a SendBuffStruct for each "target" of a part of the buffer. @@ -565,7 +585,7 @@ namespace MEDCoupling { for ( target = 0 ; target < _group_size ; target++ ) { - int recvsize = recvcount*_MPI_access->extent( recvtype ) ; + int recvsize = (int)(recvcount*_MPI_access->extent( recvtype )); checkTime( recvcount , recvtype , target , false ) ; //=========================================================================== //TODO : it is assumed actually that we have only 1 timestep before and after @@ -714,7 +734,7 @@ namespace MEDCoupling { if ( recvcounts[target] ) { - int recvsize = recvcounts[target]*_MPI_access->extent( recvtype ) ; + int recvsize = (int)(recvcounts[target]*_MPI_access->extent( recvtype )); checkTime( recvcounts[target] , recvtype , target , false ) ; //=========================================================================== //TODO : it is assumed actually that we have only 1 timestep before nad after