1. 程式人生 > >MPI一個簡單的傳送和接收的例子

MPI一個簡單的傳送和接收的例子

 

#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;

}