gpt4 book ai didi

c++ - 我应该在 openMP 并行区域内使用 gnu 并行模式功能吗(for 循环,任务)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:34 26 4
gpt4 key购买 nike

我有一个由 openMP 加速的程序,在并行区域内,函数如 std::nth_elementstd::sortstd::partition 被调用。实际上,这些函数用于处理每个 openmp-thread 对应的数组部分。

最近,我发现g++实现了上述函数的并行版本,所以我想知道我应该在#pragma omp task中使用像__gnu_parallel::nth_element这样的函数还是#pragma omp 用于 区域?如果我使用并行模式,线程总数是否会超过 omp_set_num_threads() 设置的限制并导致更差的加速?

最佳答案

简单(也是最佳)答案:基准测试并发布您的发现。

不太明确:根据我的经验,大多数算法的并行版本的效率低于可比较的串行算法,而是依靠多个并行处理器来补偿壁挂时间。关于线程数,我认为如果达到极限,OMP 不会产生新线程。我确实记得嵌入式 #pragma omp for 区域实际上并没有导致每个外线程在没有特定标志的情况下产生更多的“内线程”(我不记得我的顶部头)。

关于c++ - 我应该在 openMP 并行区域内使用 gnu 并行模式功能吗(for 循环,任务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30553556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com