22、最小数据并行排序:MPI Comm split 的高效解决方案

最小数据并行排序:MPI Comm split 的高效解决方案

1. 并行排序需求背景

自 2002 年以来,单核性能停滞不前,随着摩尔定律推动硬件并行性呈指数级增长,应用程序自然需要并行排序解决方案。假设每个进程有唯一的排名编号(0 到 p - 1),最优并行解决方案的必要条件是 n 个数据项全部分布在所有进程上,即进程 i 持有 ni 个不同的数据项,且 n = Σ(ni)(i 从 0 到 p - 1)。本文研究极端情况,即每个进程仅持有一个数据项(ni = 1,n = p)。

并行排序问题可以表述为顺序排序问题的扩展:
- 输入 :分布在 p 个进程上的项序列 (x0, x1, …, xp - 1),进程 i 持有项 xi,以及关系运算符 ≤。
- 输出 :输入序列的分布式排列 (y0, y1, …, yp - 1),进程 i 持有项 yi,且 y0 ≤ y1 ≤ … ≤ yp - 1。

消息传递接口中的 MPI Comm split 需要高效的最小数据并行排序解决方案。现有的 MPICH 和 Open MPI 实现需要 O(p) 的内存和 O(p log p) 的时间来完成排序任务。本文提出三种新颖的并行排序算法:
1. 一种资源复杂度呈线性的算法,类似于 Sack 和 Gropp 的方法,但更简单,适用于最多 100,000 个进程的 MPI Comm split 实现。
2. 对第一种算法的改进,将 O(p) 的内存复杂度降至 O(1),但会牺牲一些运行时间。
3. 一种可扩展算法,实现了最小内存复杂度 O(1),并将时间复杂度降至 O(log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值