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;

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值