二叉树求和与蝶式求和的并行算法实现

二叉树求和与蝶式求和的并行算法实现

作者:刘庆涛 1842857470@qq.com

二叉树求和

在这里插入图片描述

PCAM分析

  • 划分:将一组数据(arr)划分,数组中单个数据为一组。

  • 通信:各组需要传递自己的数据,在求和过程中,上图中arr[1]与arr[0]求和时,需要将arr[1]传递给arr[0],更新arr[0]=arr[0]+arr[1];arr[2]与arr[3]求和时,需要将arr[3]传递给arr[2],更新arr[2]=arr[2]+arr[3],以此类推。和保存在arr[0]中,然后要将arr[0]值按相反的路径,传递给其他各组。

  • 组合:各组不需要组合。

  • 映射:将各组映射到不同的处理器或进程,利用MPI库实现各组的通信。

源码

见文章末尾

运行

编译之后,打开命令行,输入

cd C:\Code\C++\test\x64\Debug

mpiexec -n 对 前 x 个 数 求 和 {对前x个数求和} x test.exe

下图是x=8和x=4的运行情况

在这里插入图片描述

蝶式求和

PCAM分析

  • 划分:将一组数据(arr)划分,数组中单个数据为一组。

  • 通信:各组需要传递自己的数据,在求和过程中,上图中arr[1]与arr[0]求和时, 相互传递本组的值,同时更新arr[0]=arr[0]+arr[1] arr[1]=arr[0]+arr[1];第二轮求和时,arr[0]组与arr[2]组相互交换数据求和;第三轮以此类推。最终,各组都保持了全和。

  • 组合:各组不需要组合。

  • 映射:将各组映射到不同的处理器或进程,利用MPI库实现各组的通信。

源码

源码见文章末尾

运行

cd C:\Code\C++\test\x64\Debug

mpiexec -n 8 test.exe

运行效果如下:
在这里插入图片描述
源码资源:
https://download.csdn.net/download/GooTal/76969609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字江慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值