非编程方式影响 std::thread::hardware_concurrency() 的返回值

问题描述 投票:0回答:1

我有一个使用 STL 算法和

std::execution::parallel_policy
策略实现的并行 C++ 算法。

现在,我希望能够衡量随着可用并发线程数量的增加,性能变化有多大。

c++ 似乎没有提供任何方法让用户限制使用的并发线程数,至少目前是这样。

不过,我想知道是否可以通过“让程序读取”可用线程数较少的方式来规避此限制(例如,禁用某些 CPU 内核或通过操作系统以某种方式调整此信息)。

我不是这个主题的专家,我非常感谢您的帮助。 谢谢!

c++ multithreading parallel-processing stl
1个回答
0
投票

没有任何东西可以保证

std::thread::hardware_concurrency
会被并行算法调用(并且 AFAICT 至少在 libstdc++ 中不是)。因此改变它可能会也可能不会完成任何事情。

libstdc++ 事实上很大程度上依赖于 Intel 的 TBB 来进行并行执行。您将需要对其进行配置。也许这个答案会有所帮助。

libc++ 似乎根本没有实现执行策略。

我对微软的标准库一无所知。

© www.soinside.com 2019 - 2024. All rights reserved.