二叉树求和与蝶式求和的并行算法实现
二叉树求和
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库实现各组的通信。
源码
见文章末尾
运行
编译之后,打开命令行,输入
下图是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库实现各组的通信。
源码
源码见文章末尾
运行
运行效果如下:
源码资源:
https://download.csdn.net/download/GooTal/76969609