并行排序算法的可移植性、可扩展性及快速排序优化
在排序算法的并行化实现中,可移植性、可扩展性是重要的考量因素。同时,快速排序作为经典的排序算法,其串行和并行实现方式也有诸多技术细节值得探讨。
1. 排序算法的可移植性与可扩展性
- 可移植性
- OpenMP 和 TBB 方案 :OpenMP 解决方案具有可移植性,使用 TBB 实现类似算法也会采取相似策略。在排序过程中,为确保所有 h - 分区使用前一个 h 值排序完成后,线程才进入 while 循环的下一次迭代,需要某种形式的屏障同步。OpenMP 在循环工作共享结构结束时会自动提供这种同步。
- 原生线程方案 :原生线程解决方案只需划分 k 循环迭代。与 TBB 一样,原生线程也需要显式的屏障。
- 分布式内存版本 :分布式内存版本较为复杂,因为存在数据从数组的一部分移动到另一部分的情况,而这两部分可能分配给不同的处理器。有一种在超立方体网络上的算法,分为两个阶段。第一阶段有 d 步,每一步对应 d 维立方体中节点标签二进制表示的每一位。每个节点先对分配的数据进行排序,然后在当前位标签不同的节点对之间进行比较 - 分割操作。经过第一阶段的 d 步后,待排序数据会更接近其最终位置。第二阶段是跨节点的奇偶换位排序,可减少数据项的移动。
- 可扩展性 :并发希尔排序的可扩展性起初较好。在排序过程中的任何时刻,会有 h 个不同的独立分区,它们
超级会员免费看
订阅专栏 解锁全文

5024

被折叠的 条评论
为什么被折叠?



