//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
array_of_displacements[0] = 0 ;
array_of_displacements[1] = sizeof(double) ;
array_of_displacements[2] = 2*sizeof(double) ;
array_of_displacements[0] = 0 ;
array_of_displacements[1] = sizeof(double) ;
array_of_displacements[2] = 2*sizeof(double) ;
- MPI_Type_struct(3, array_of_blocklengths, array_of_displacements,
+ MPI_Type_create_struct(3, array_of_blocklengths, array_of_displacements,
array_of_types, &_MPI_TIME) ;
MPI_Type_commit(&_MPI_TIME) ;
}
array_of_types, &_MPI_TIME) ;
MPI_Type_commit(&_MPI_TIME) ;
}
"_MapOfRequestStruct".
That structure RequestStruct give the possibility to manage
the structures MPI_Request and MPI_Status * of MPI. It give
"_MapOfRequestStruct".
That structure RequestStruct give the possibility to manage
the structures MPI_Request and MPI_Status * of MPI. It give
target, send/recv, tag, [a]synchronous, type, outcount.
. That identifier is used to control an asynchronous request
target, send/recv, tag, [a]synchronous, type, outcount.
. That identifier is used to control an asynchronous request
// Receive (read) in synchronous mode count values of type datatype in buffer from source
// (returns RequestId identifier even if the corresponding structure is deleted :
// it is only in order to have the same signature as the asynchronous mode)
// Receive (read) in synchronous mode count values of type datatype in buffer from source
// (returns RequestId identifier even if the corresponding structure is deleted :
// it is only in order to have the same signature as the asynchronous mode)
int MPIAccess::recv(void* buffer, int count, MPI_Datatype datatype, int source, int &RequestId, int *OutCount)
{
int sts = MPI_SUCCESS ;
int MPIAccess::recv(void* buffer, int count, MPI_Datatype datatype, int source, int &RequestId, int *OutCount)
{
int sts = MPI_SUCCESS ;
source = aMPIStatus.MPI_SOURCE ;
MPITag = aMPIStatus.MPI_TAG ;
int MethodId = (MPITag % MODULO_TAG) ;
source = aMPIStatus.MPI_SOURCE ;
MPITag = aMPIStatus.MPI_TAG ;
int MethodId = (MPITag % MODULO_TAG) ;
_comm_interface.getCount(&aMPIStatus, myDatatype, &outcount ) ;
if ( _trace )
cout << "MPIAccess::Probe" << _my_rank << " FromSource " << FromSource
_comm_interface.getCount(&aMPIStatus, myDatatype, &outcount ) ;
if ( _trace )
cout << "MPIAccess::Probe" << _my_rank << " FromSource " << FromSource
source = aMPIStatus.MPI_SOURCE ;
MPITag = aMPIStatus.MPI_TAG ;
int MethodId = (MPITag % MODULO_TAG) ;
source = aMPIStatus.MPI_SOURCE ;
MPITag = aMPIStatus.MPI_TAG ;
int MethodId = (MPITag % MODULO_TAG) ;
_comm_interface.getCount(&aMPIStatus, myDataType, &outcount ) ;
if ( _trace )
cout << "MPIAccess::IProbe" << _my_rank << " FromSource " << FromSource
_comm_interface.getCount(&aMPIStatus, myDataType, &outcount ) ;
if ( _trace )
cout << "MPIAccess::IProbe" << _my_rank << " FromSource " << FromSource
int MPIAccess::cancel( int source, int theMPITag, MPI_Datatype datatype, int outcount, int &flag )
{
int sts ;
int MPIAccess::cancel( int source, int theMPITag, MPI_Datatype datatype, int outcount, int &flag )
{
int sts ;
- MPI_Aint aextent ;
- MPI_Type_extent( _MPI_TIME , &aextent ) ;
+ MPI_Aint aextent, lbound ;
+ MPI_Type_get_extent( _MPI_TIME , &lbound, &aextent ) ;
- MPI_Aint aextent ;
- MPI_Type_extent( MPI_INT , &aextent ) ;
+ MPI_Aint aextent, lbound ;
+ MPI_Type_get_extent( MPI_INT , &lbound, &aextent ) ;
- MPI_Aint aextent ;
- MPI_Type_extent( MPI_DOUBLE , &aextent ) ;
+ MPI_Aint aextent, lbound ;
+ MPI_Type_get_extent( MPI_DOUBLE , &lbound, &aextent ) ;