]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Asynchronisme MPI
authorrahuel <rahuel@opencascade.com>
Thu, 17 Jan 2008 10:01:24 +0000 (10:01 +0000)
committerrahuel <rahuel@opencascade.com>
Thu, 17 Jan 2008 10:01:24 +0000 (10:01 +0000)
src/ParaMEDMEM/MPI_Access.cxx
src/ParaMEDMEM/MPI_Access.hxx
src/ParaMEDMEM/MPI_AccessDEC.cxx

index c4cf555fc0c602d534a6ab17dda8381812c6f418..50a22e77d8140ba2b3756ade1c2f24629d05b537 100644 (file)
@@ -270,6 +270,7 @@ int MPI_Access::RecvRequestIds(int sourcerank, int size, int *ArrayOfRecvRequest
 int MPI_Access::Send(void* buffer, int count, MPI_Datatype datatype, int target,
                      int &RequestId) {
   int sts = MPI_SUCCESS ;
+  RequestId = -1 ;
   if ( count ) {
     _MessageIdent aMethodIdent = MethodId( datatype ) ;
     int MPItag = NewSendTag( datatype, target , aMethodIdent , false , RequestId ) ;
@@ -287,6 +288,10 @@ int MPI_Access::Send(void* buffer, int count, MPI_Datatype datatype, int target,
 int MPI_Access::Recv(void* buffer, int count, MPI_Datatype datatype, int source,
                      int &RequestId, int *OutCount) {
   int sts = MPI_SUCCESS ;
+  RequestId = -1 ;
+  if ( OutCount != NULL ) {
+    *OutCount = -1 ;
+  }
   if ( count ) {
     _MessageIdent aMethodIdent = MethodId( datatype ) ;
     int MPItag = NewRecvTag( datatype, source , aMethodIdent , false , RequestId ) ;
@@ -311,6 +316,7 @@ int MPI_Access::Recv(void* buffer, int count, MPI_Datatype datatype, int source,
 int MPI_Access::ISend(void* buffer, int count, MPI_Datatype datatype, int target,
                       int &RequestId) {
   int sts = MPI_SUCCESS ;
+  RequestId = -1 ;
   if ( count ) {
     _MessageIdent aMethodIdent = MethodId( datatype ) ;
     int MPItag = NewSendTag( datatype, target , aMethodIdent , true , RequestId ) ;
@@ -328,6 +334,7 @@ int MPI_Access::ISend(void* buffer, int count, MPI_Datatype datatype, int target
 int MPI_Access::IRecv(void* buffer, int count, MPI_Datatype datatype, int source,
                       int &RequestId) {
   int sts = MPI_SUCCESS ;
+  RequestId = -1 ;
   if ( count ) {
     _MessageIdent aMethodIdent = MethodId( datatype ) ;
     int MPItag = NewRecvTag( datatype, source , aMethodIdent , true , RequestId ) ;
@@ -596,6 +603,7 @@ int MPI_Access::Probe(int FromSource, int &source, int &MPITag,
   else {
     source = -1 ;
     MPITag = -1 ;
+    datatype = 0 ;
     outcount = -1 ;
   }
   return sts ;
@@ -622,6 +630,7 @@ int MPI_Access::IProbe(int FromSource, int &source, int &MPITag,
   else {
     source = -1 ;
     MPITag = -1 ;
+    datatype = 0 ;
     outcount = -1 ;
   }
   return sts ;
@@ -770,12 +779,12 @@ void MPI_Access::Check() const {
   for ( MapOfRequestStructiterator = _MapOfRequestStruct.begin() ;
         MapOfRequestStructiterator != _MapOfRequestStruct.end() ;
         MapOfRequestStructiterator++ ) {
-     cout << "    Check" << _MyRank << " " << i << ". Request"
-          << MapOfRequestStructiterator->first << "-->" ;
      if ( MapOfRequestStructiterator->second == NULL ) {
-       cout << " MapOfRequestStructiterator->second == NULL" << endl ;
+//       cout << " MapOfRequestStructiterator->second == NULL" << endl ;
      }
      else {
+       cout << "    Check" << _MyRank << " " << i << ". Request"
+            << MapOfRequestStructiterator->first << "-->" ;
        if ( (MapOfRequestStructiterator->second)->MPIAsynchronous ) {
          cout << "I" ;
        }
index e78b7f202e1d7215c14232cae25ee77680600243..5bb256e54bd866db1b915de0aa51888c8b383796 100644 (file)
@@ -294,6 +294,9 @@ class MPI_Access {
   }
 
   inline void MPI_Access::DeleteSendRecvRequest( int RequestId ) {
+         if ( _Trace )
+           cout << "MPI_Access::DeleteSendRecvRequest" << _MyRank
+                << "( " << RequestId << " ) " << endl ;
          if ( MPIIsRecv( RequestId ) ) {
            _RecvRequests[ MPITarget( RequestId ) ].remove( RequestId ) ;
          }
@@ -333,9 +336,6 @@ class MPI_Access {
          struct RequestStruct *aRequestStruct = _MapOfRequestStruct[ RequestId ] ;
          if ( aRequestStruct ) {
            aRequestStruct->MPICompleted = completed ;
-           //if ( completed ) {
-           //  DeleteRequest( RequestId ) ;
-           //}
          }
   }
   inline void MPI_Access::SetMPIOutCount( int RequestId , int outcount ) {
index 09389f49f780b7252718e8a5d241da32acb13a73..83bdf8da67224fa0bf3dc1993d91578baca45f6e 100644 (file)
@@ -791,6 +791,7 @@ int MPI_AccessDEC::CheckFinalRecv() {
          else {
            delete [] (double *) (*_DataMessages)[target][0] ;
          }
+         (*_DataMessages)[target][0] = NULL ;
        }
        if ( (*_DataMessages)[target][1] != NULL ) {
          if ( _DataMessagesType == MPI_INT ) {
@@ -799,6 +800,7 @@ int MPI_AccessDEC::CheckFinalRecv() {
          else {
            delete [] (double *) (*_DataMessages)[target][1] ;
          }
+         (*_DataMessages)[target][1] = NULL ;
        }
      }
   }