通信域:由进程组,通信上下文等内容组成,每个进程都会隶属一个或多个通信域
进程组:通信域中所有进程的集合
MPI | C |
---|---|
MPI_CHAR | signed char |
MPI_UNSIGNED_CHAR | unsigned char |
MPI_INT | int |
MPI_UNSIGNED | unsigned int |
MPI_SHORT | short |
MPI_UNSIGNED_SHORT | unsigned short |
MPI_LONG | long |
MPI_UNSIGNED_LONG | unsigned long |
MPI_FLOAT | float |
MPI_DOUBLE | double |
MPI_LONG_DOUBLE | long double |
MPI_BYTE | |
MPI_PACKED |
#include"mpi.h"
#include<stdio.h>
int main(int argc,char **argv)
{
int rank,size,tag=1;
int senddata,recvdata;
MPI_Status status;
MPI_Init(&argc,&argv);//初始化
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
//获取当前进程在指定通讯域中的编号
MPI_Comm_size(MPI_COMM_WORLD,&size);
//获取当前进程在指定通讯域中的进程数,用于确定本进程应当完成的任务比例
if(rank==0)
{
senddata=9999;
MPI_Send(&senddata,1,MPI_INT,1,tag,MPI_COMM_WORLD);
//发送数据给进程1
//tag用于把本次发送的消息和本进程发送给同一目标进程的其他消息区分开来
}
else if(rank==1)
{
MPI_Recv(&recvdata,1,MPI_INT,0,tag,MPI_COMM_WORLD,&status);
//从进程0接收数据
printf(recvdata);
}
MPI_Finalize();//mpi结束函数
return 0;
}
原文:https://www.cnblogs.com/kreamyu/p/12636073.html