//
// 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
if ( size < 2 ) {
ostringstream strstream ;
strstream << "test_MPI_Access_ISend_IRecv_Length_1 must be runned with 2 procs" << endl ;
if ( size < 2 ) {
ostringstream strstream ;
strstream << "test_MPI_Access_ISend_IRecv_Length_1 must be runned with 2 procs" << endl ;
sts = MPI_SUCCESS ;
if ( myrank == 0 ) {
sts = mpi_access.ISend( sendbuf, 1000*i, MPI_INT, target, SendRequestId[i] ) ;
sts = MPI_SUCCESS ;
if ( myrank == 0 ) {
sts = mpi_access.ISend( sendbuf, 1000*i, MPI_INT, target, SendRequestId[i] ) ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
<< " MPITag " << MPITag << " datatype " << datatype
<< " outcount " << outcount << " flag " << flag << endl ;
}
<< " MPITag " << MPITag << " datatype " << datatype
<< " outcount " << outcount << " flag " << flag << endl ;
}
int target, tag, error, outcount ;
mpi_access.status( SendRequestId[j], target, tag, error, outcount,
true ) ;
int target, tag, error, outcount ;
mpi_access.status( SendRequestId[j], target, tag, error, outcount,
true ) ;
<< ") : target " << target << " tag " << tag << " error " << error
<< " flag " << flag << endl ;
}
else {
sts = mpi_access.IRecv( recvbuf[maxirecv], outcount, datatype, source,
RecvRequestId[maxirecv] ) ;
<< ") : target " << target << " tag " << tag << " error " << error
<< " flag " << flag << endl ;
}
else {
sts = mpi_access.IRecv( recvbuf[maxirecv], outcount, datatype, source,
RecvRequestId[maxirecv] ) ;
<< RecvRequestId[maxirecv] << " source " << source
<< " outcount " << outcount << " tag "
<< mpi_access.recvMPITag(target) << endl ;
<< RecvRequestId[maxirecv] << " source " << source
<< " outcount " << outcount << " tag "
<< mpi_access.recvMPITag(target) << endl ;
else if ( myrank == 1 && i == maxreq-1 && j >= maxirecv ) {
sts = mpi_access.IRecv( recvbuf[j], 1000*j, MPI_INT, target,
RecvRequestId[j] ) ;
else if ( myrank == 1 && i == maxreq-1 && j >= maxirecv ) {
sts = mpi_access.IRecv( recvbuf[j], 1000*j, MPI_INT, target,
RecvRequestId[j] ) ;
<< RecvRequestId[j] << " target " << target << " length " << 1000*j
<< " tag " << mpi_access.recvMPITag(target) << endl ;
maxirecv = maxirecv + 1 ;
<< RecvRequestId[j] << " target " << target << " length " << 1000*j
<< " tag " << mpi_access.recvMPITag(target) << endl ;
maxirecv = maxirecv + 1 ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
<< endl << "test" << myrank << " KO" << endl
<< "==========================================================="
<< endl ;
<< endl << "test" << myrank << " KO" << endl
<< "==========================================================="
<< endl ;
sts = mpi_access.test( RecvRequestId[i] , flag ) ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
sts = mpi_access.test( RecvRequestId[i] , flag ) ;
char msgerr[MPI_MAX_ERROR_STRING] ;
int lenerr ;
mpi_access.errorString(sts, msgerr, &lenerr) ;
<< lenerr << " " << msgerr << " maxirecv " << maxirecv << endl ;
if ( sts != MPI_SUCCESS ) {
ostringstream strstream ;
<< lenerr << " " << msgerr << " maxirecv " << maxirecv << endl ;
if ( sts != MPI_SUCCESS ) {
ostringstream strstream ;
if ( flag ) {
int tag, error ;
mpi_access.status( RecvRequestId[i] , source , tag , error ,
if ( flag ) {
int tag, error ;
mpi_access.status( RecvRequestId[i] , source , tag , error ,
<< " recvbuf " << recvbuf[i][outcount-1] << endl
<< "========================================================"
<< endl ;
<< " recvbuf " << recvbuf[i][outcount-1] << endl
<< "========================================================"
<< endl ;
if ( myrank == 0 ) {
mpi_access.waitAll( maxreq, SendRequestId ) ;
mpi_access.deleteRequests( maxreq, SendRequestId ) ;
if ( myrank == 0 ) {
mpi_access.waitAll( maxreq, SendRequestId ) ;
mpi_access.deleteRequests( maxreq, SendRequestId ) ;
strstream << "=========================================================" << endl
<< "test" << myrank << " sendreqsize " << sendreqsize << " KO" << endl
<< "=========================================================" << endl ;
strstream << "=========================================================" << endl
<< "test" << myrank << " sendreqsize " << sendreqsize << " KO" << endl
<< "=========================================================" << endl ;
<< "test" << myrank << " sendreqsize " << sendreqsize << " OK" << endl
<< "=========================================================" << endl ;
}
<< "test" << myrank << " sendreqsize " << sendreqsize << " OK" << endl
<< "=========================================================" << endl ;
}
strstream << "=========================================================" << endl
<< "test" << myrank << " recvreqsize " << recvreqsize << " KO" << endl
<< "=========================================================" << endl ;
strstream << "=========================================================" << endl
<< "test" << myrank << " recvreqsize " << recvreqsize << " KO" << endl
<< "=========================================================" << endl ;
<< "test" << myrank << " recvreqsize " << recvreqsize << " OK" << endl
<< "=========================================================" << endl ;
}
<< "test" << myrank << " recvreqsize " << recvreqsize << " OK" << endl
<< "=========================================================" << endl ;
}