MPI中的归约

文章探讨了在并行计算中如何利用MPI的归约操作(MPI_Reduce)来改进梯形积分求面积程序的效率。通过归约,避免了所有计算集中在单一线程,实现了更多线程的并行工作,从而提高整体计算性能。同时提到了MPI中的点对点通信函数MPI_Send和MPI_Recv,以及散射函数在分配数据时的作用。
摘要由CSDN通过智能技术生成

在上面一篇文章中,有一个利用梯形积分求面积的程序, 在程序中,线程0用来接受每一个小小梯形的面积然后在将所有梯形求和,很明显, 当数据传到线程0时,其他线程就停止了工作,这样造成所有求和都是由线程0来进行的。 为了让尽量多的线程进行工作,可以利用归约的思想:






因为对于大小不一样的树形结构来说,编写一个最佳的程序是很困难的。所以可以直接利用MPI 的库函数. MPI_Reduce , 在MPI_Reduce中,所有的进程都需要通信,所以称这样的通信函数为集合通信函数。  MPI_Send和MPI_Recv为点对点通信。


//API:
int MPI_Reduce(void* input_data_p,void*output_data_p, int count,MPI_Datatype datatype,MPI_Op operator, int dest_process,MPI_Comm comm);
// operator可以有:求最大值 MPI_MAX 最小值 求累加和 累乘积 逻辑操作  
// 求和语句
MPI_Reduce(&local_int,&total_int,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
//另外有时候需要将得到的结果放入所有的线程中
MPI_Allreduce(void* input_data_p,void*o
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值