- err = MTestCheckRecv( 0, &recvtype );
- if (err) {
- if (errs < 10) {
- printf( "Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n",
- MTestGetDatatypeName( &recvtype ),
- MTestGetDatatypeName( &sendtype ),
- count );
- recvtype.printErrors = 1;
- (void)MTestCheckRecv( 0, &recvtype );
- }
- errs += err;
- }
- }
- MTestFreeDatatype( &sendtype );
- MTestFreeDatatype( &recvtype );
- }
- }
- MTestFreeComm( &comm );
+ err = MPI_Send(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, comm);
+ if (err) {
+ errs++;
+ if (errs < 10) {
+ MTestPrintError(err);
+ }
+ }
+ }
+ else if (rank == dest) {
+ err = MPI_Recv(recvtype.buf, recvtype.count,
+ recvtype.datatype, source, 0, comm, MPI_STATUS_IGNORE);
+ if (err) {
+ errs++;
+ if (errs < 10) {
+ MTestPrintError(err);
+ }
+ }
+
+ err = MTestCheckRecv(0, &recvtype);
+ if (err) {
+ if (errs < 10) {
+ printf
+ ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n",
+ MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype),
+ count);
+ recvtype.printErrors = 1;
+ (void) MTestCheckRecv(0, &recvtype);
+ }
+ errs += err;
+ }
+ }
+ MTestFreeDatatype(&sendtype);
+ MTestFreeDatatype(&recvtype);
+ }
+ }
+ MTestFreeComm(&comm);