我有一个使用 STL 算法和
std::execution::parallel_policy
策略实现的并行 C++ 算法。
现在,我希望能够衡量随着可用并发线程数量的增加,性能变化有多大。
c++ 似乎没有提供任何方法让用户限制使用的并发线程数,至少目前是这样。
不过,我想知道是否可以通过“让程序读取”可用线程数较少的方式来规避此限制(例如,禁用某些 CPU 内核或通过操作系统以某种方式调整此信息)。
我不是这个主题的专家,我非常感谢您的帮助。 谢谢!
没有任何东西可以保证
std::thread::hardware_concurrency
会被并行算法调用(并且 AFAICT 至少在 libstdc++ 中不是)。因此改变它可能会也可能不会完成任何事情。
libstdc++ 事实上很大程度上依赖于 Intel 的 TBB 来进行并行执行。您将需要对其进行配置。也许这个答案会有所帮助。
libc++ 似乎根本没有实现执行策略。
我对微软的标准库一无所知。