- 1、本文档共653页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
int * table; MPI_Init(argc,argv); MPI_Comm_rank(MPI_COMM_WORLD,rank); MPI_Comm_size(MPI_COMM_WORLD,size); table=(int *) malloc(size*szieof(int)); table [rank]=rank+1; MPI_Barrier(MPI_COMM_WORLD); for( i = 0 ; i size; i ++ ) MPI_Bcast ( table[i] , 1,MPI_INT , i , MPI_COMM_WIRLD ) ; For(I=0;Isize;I++) if(table[i]!=I+1) errors++; MPI_Barrier(MPI_COMM_WORLD); …… 组通信的三个功能: 通信 同步 计算 第十三讲 第八节 归 约 在进行通信的同时完成一定的计算 除完成消息传递功能之外,还能对所传递的数据进行一定的操作或运算 MPI_REUDCE调用 MPI_REDUCE(sendbuf,recvbuf,count,datatype,op,root,comm)INsendbuf 发送消息缓冲区的起始地址OUT recvbuf接收消息缓冲区中的地址 INcount 发送消息缓冲区中的数据个数 INdatatype 发送消息缓冲区的元素类型INop 归约操作符 INroot 根进程序列号 INcomm 通信域 功能:将组内每个进程输入缓冲区中的数据按给定的操作op进行运算,并将其结果返回到序列号为root的进程的输出缓冲区中。 进程0 进程1 进程2 …… 进程N-1 进程root 缓冲区 op op op op op op op op op op op op op op op op op op op op A0 B0 C0 A1 B1 C1 A2 B2 C2 A0+A1+A2 B0+B1+B2 C0+C1+C2 reduce 进程0 进程1 进程2 MPI_REDUCE(sendbuf,recvbuf,count,datatype,op,root,comm)INsendbuf 发送消息缓冲区的起始地址OUT recvbuf接收消息缓冲区中的地址 INcount 发送消息缓冲区中的数据个数 INdatatype 发送消息缓冲区的元素类型INop 归约操作符 INroot 根进程序列号 INcomm 通信域 输入缓冲区由参数sendbuf、count和datatype定义; 输出缓冲区由参数recvbuf、count和datatype定义; 所有进程都提供长度、元素类型相同的输入和输出缓冲区. 第九节 MPI预定义的归约操作 名字 含义 MPI_MAX 最大值 MPI_MIN 最小值 MPI_SUM 求和 MPI_PROD 求积 MPI_LAND 逻辑与 MPI_BAND 按位与 MPI_LOR 逻辑或 MPI_BOR 按位或 MPI_LXOR 逻辑异或 MPI_BXOR 按位异或 MPI_MAXLOC 最大值且相应位置 MPI_MINLOC 最小值且相应位置 C或Fortran类型与MPI类型的对应 C语言中的整型: MPI_INT MPI_LONG MPI_SHORT MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG Fortran语言中的整型: MPI_INTEGER 浮点数 MPI
文档评论(0)