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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章