MPI之Reduce和Allreduce
来源:互联网 发布:如何投诉淘宝客服态度 编辑:程序博客网 时间:2024/06/05 16:02
一、前言
Reduce——规约是来自函数式编程的一个经典概念。数据规约包含通过一个函数将一批数据分成较小的一批数据。比如将一个数组的元素通过加法函数规约为一个数字。
二、MPI_Reduce
与MPI_Gather类似,MPI_Reduce在每个进程上都有一组输入元素,并将一个输出元素数组返回给根进程。 输出元素包含被规约的结果。
MPI_Reduce( void* send_data, void* recv_data, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm communicator)
send_data参数指向的是每个进程想要规约的datatype类型的元素数组。recv_data仅与根进程相关。recv_data数组包含规约的结果,并具有sizeof(datatype)* count的大小的内存。op参数是要应用于数据的操作。 MPI包含一组可以使用的常见规约操作:
MPI_MAX - 返回最大值.MPI_MIN - 返回最小值.MPI_SUM -元素和.MPI_PROD - 元素乘积.MPI_LAND - 逻辑与.MPI_LOR - 逻辑或MPI_BAND -按位与MPI_BOR - 按位或MPI_MAXLOC - 返回最大值和拥有该值的进程编号MPI_MINLOC - 返回最小值和拥有该值的进程编号.```典型的规约实例如下:![这里写图片描述](http://mpitutorial.com/tutorials/mpi-reduce-and-allreduce/mpi_reduce_1.png)如果每个进程中的数组拥有两个元素,那么规约结果是对两个对位的元素进行规约的。![这里写图片描述](http://mpitutorial.com/tutorials/mpi-reduce-and-allreduce/mpi_reduce_2.png)三、MPI_Allreduce 很多并行程序需要获得所有进程的规约结果而不是根进程的结果,在MPI_Allgather与MPI_Gather的类似互补式中,MPI_Allreduce将规约值结果分发到所有进程。MPI_Allreduce与MPI_Reduce相同,但不需要根进程标识(因为结果分发到所有进程)。
MPI_Allreduce(
void* send_data,
void* recv_data,
int count,
MPI_Datatype datatype,
MPI_Op op,
MPI_Comm communicator)
“`
起作用如下:
0 0
- MPI之Reduce和Allreduce
- 我的并行计算之路(四)MPI集合通信之Reduce和Allreduce
- MPI中的Bcast, Reduce和Gather使用举例
- Qt之Concurrent Map和Map-Reduce
- Qt之Concurrent Filter和Filter-Reduce
- python之map和reduce的区别
- Hive 之 排序和reduce设置
- Spark RDD 之 map和reduce
- 用MPI实现Hadoop Map/Reduce的TeraSort
- MPI之求和
- MPI之数据类型
- OpenMP和MPI比较
- OpenMP和MPI
- MPI 和 OMP模型
- OpenMP和MPI
- mpi求前缀和
- MPI和MIC
- MPI和OpenFOAM
- zz的成长
- Linux更改ssh服务远程登录配置
- EL表达式
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- ElasticSearch之CURL操作
- MPI之Reduce和Allreduce
- 13th浙江省赛K Highway Project
- 静态代理
- code[vs] 1474十进制-m进制
- Linux sed之删除文件第一行
- 【SSH进阶之路】Struts基本原理 + 实现简单登录(二)
- 如何写死 u-boot 中的 bootargs
- CSDN-栏目美化
- River Crossing