MPI一個簡單的傳送和接收的例子
阿新 • • 發佈:2019-02-08
#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字元型,接收的訊息來自程序
MPI_Recv(message,20,MPI_CHAR,0,99,MPI_COMM_WORLD,&status);
printf("received:%s/n",message);
}
MPI_Finalize();
return 0;
}