MPI发送接收例子

原文地址:http://blog.csdn.net/ziren235/article/details/1704203

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

}

posted @ 2016-05-16 22:09  子健儿  阅读(504)  评论(0编辑  收藏  举报