InBlock.gif#include<stdio.h>
InBlock.gif#include<mpi.h>
InBlock.gifint main(int argc, char *argv[]){
InBlock.gif    int numTasks, rank,    rc0, rc1, rc2, rc3;
InBlock.gif    MPI_Request request[4];
InBlock.gif    MPI_Status status[4];
InBlock.gif                
InBlock.gif    char sendChar;
InBlock.gif    char receiveChar;
InBlock.gif
InBlock.gif    MPI_Init(&argc, &argv);
InBlock.gif    MPI_Comm_size(MPI_COMM_WORLD, &numTasks); //get from -np    
InBlock.gif    MPI_Comm_rank(MPI_COMM_WORLD, &rank); //each process's ID
InBlock.gif                
InBlock.gif  if(rank == 0){    
InBlock.gif      sendChar = 'A';
InBlock.gif                 int count = 1;
InBlock.gif      int destRank = 1;
InBlock.gif      int sourceRank = 1; //MPI_ANY_SOURCE    
InBlock.gif      int tagSendMSGID = 6;
InBlock.gif      int tagRecvMSGID = 9;
InBlock.gif    
InBlock.gif      rc0 = MPI_Isend(&sendChar, count, MPI_CHAR,    
InBlock.gif                    destRank, tagSendMSGID, MPI_COMM_WORLD, &request[0]);    
InBlock.gif      rc1 = MPI_Irecv(&receiveChar, count, MPI_CHAR,    
InBlock.gif                      sourceRank, tagRecvMSGID, MPI_COMM_WORLD, &request[1]);
InBlock.gif  } else if(rank == 1){
InBlock.gif      sendChar = 'Z';
InBlock.gif      int count = 1;
InBlock.gif      int destRank = 0;    
InBlock.gif      int sourceRank = 0;
InBlock.gif      int tagRecvMSGID = 6;
InBlock.gif      int tagSendMSGID = 9;
InBlock.gif
InBlock.gif      rc2 = MPI_Isend(&sendChar, count, MPI_CHAR,    
InBlock.gif        destRank, tagSendMSGID, MPI_COMM_WORLD, &request[2]);
InBlock.gif      rc3 =    MPI_Irecv(&receiveChar, count, MPI_CHAR,    
InBlock.gif        sourceRank, tagRecvMSGID, MPI_COMM_WORLD, &request[3]);
InBlock.gif  }
InBlock.gif                
InBlock.gif    //MPI_Waitall(4, request, status);
InBlock.gif    printf("Rank = %d, received char = %c, send char = %c\n",    
InBlock.gif      rank, receiveChar, sendChar);
InBlock.gif                
InBlock.gif    printf("rc0 = %d, rc1 = %d, rc2 = %d, rc3 = %d\n", rc0, rc1, rc2, rc3);
InBlock.gif    
InBlock.gif    MPI_Finalize();
InBlock.gif    return 0;
InBlock.gif}