libstdc++ 并行模式快速排序的加速较差
Poor speedup with libstdc++ parallel mode quick sort
>我无法使用就地排序算法(快速排序和平衡快速排序;QS/BQS)来自libstdc++的并行实现(并行模式)。我尝试在由 16 到 24 个内核组成的许多不同的系统上运行代码。我也尝试过GNU和Intel C++编译器,即使是不同的版本,总是得到相同的结果。对于 2 和最大之间的任意数量的内核,2 左右的加速比是相同的。
相反,多路合并排序 (MWMS) 扩展性很好(在 16 核计算机上使用 16 个线程加速约 10)。根据 J. Singler 的演讲"GNU libstdc++ 并行模式:使用 STL 从多核中受益",它们测量的 BQS 加速比与 MWMS 几乎相同(见第 18 页,http://ls11-www.cs.uni-dortmund.de/people/gutweng/AD08/VO11_parallel_mode_overview.pdf);他们观察到使用 32 个线程的 BQS 加速超过 20。
知道为什么会发生这种情况或我错了什么吗?
我似乎只需调用以下内容即可解决问题:
omp_set_nested(1);
文档对此要求有点不清楚。此外,我希望库能够自行执行调用。希望这也对其他人有所帮助。
相关文章:
- 如何修复我的快速排序实现?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在 MIPS 中快速排序
- 不正确的比较和交换计数器输出用于快速排序功能
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 并行快速排序分区中的隔离错误
- 实现 3 路分区以实现快速排序
- 为什么这个快速排序实现给出了一个奇怪的输出
- 我的快速排序在对预排序的项目进行排序时失败,如何改进?
- 快速排序不适用于大型数组
- 快速排序;分段错误,但找不到位置?
- 快速排序函数在快速排序算法中如何工作?
- 3路随机快速排序分区功能
- 在最坏的情况下试验快速排序.它运行良好,但在最坏的情况下发生未知错误.我想
- 当给出预先排序的输入时,为什么我的快速排序实现很慢
- 我想要一个改变数组快速排序的2个数字的函数
- C++一个具有 2 个参数(___ _____,整数长度)的函数中的快速排序
- libstdc++ 并行模式快速排序的加速较差