#include"mpi.h"
int main(int argc,char *argv[])
{
char message[20]="";
int myrank;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
if(myrank==0)
{/*先將字符串拷貝到發送緩衝區message中,然後調用MPI_Send語句將它發出,用
strlen(message)指定消息的長度,用MPI_CHAR指定消息的數據類型1,指明發往進程1, 使
用的消息標識是99 ,MPI_COMM_WORLD是包含本進程進程0 和接收消息的進程進
程1 的通信域,發送方和接收方必須在同一個通信域中,由通信域來統一協調和控制消息
的發送和接收*/
strcpy(message,"Hello,process 1");
MPI_Send(message,strlen(message),MPI_CHAR,1,99,MPI_COMM_WORLD);
}
else if(myrank==1)
{/*進程1直接執行接收消息的操作,這裏它使用message作爲接收緩衝區,由此可見,對於同一個變量在發送進程和接收進程中的作用是不同的,它指定接收消息的最大長度爲20 ,消息的數據類型爲MPI_CHAR字符型,接收的消息來自進程0 ,而接收消息攜帶的標識必須爲99,使用的通信域也是MPI_COMM_WORLD, 接收完成後的各種狀態信息存放在status中,接收完成後它直接將接收到的字符串打印在屏幕上*/
MPI_Recv(message,20,MPI_CHAR,0,99,MPI_COMM_WORLD,&status);
printf("received:%s/n",message);
}
MPI_Finalize();
return 0;
}