如何在C ++ 17 STL并行算法中处理调度?

问题描述 投票:2回答:2

是否存在C ++ 17 STL并行算法的标准调度程序规范,还是完全依赖于实现?串行算法具有复杂性保证,但调度程序实现对于非均匀任务负载的性能至关重要,规范是否解决了这个问题?如果没有标准化的调度程序,似乎很难保证跨平台性能。

c++ parallel-processing stl c++17
2个回答
6
投票

据我所知,从the wording可以看出,这些细节完全属于实现规范的范畴,正如人们所期望的那样。标准通常不会保证任何类型的绝对性能,只有复杂性要求,正如您在这种情况下所看到的那样。

最终,尽管您的源代码现在可以在完全标准定义的同时利用并行性,但运行程序的实际结果取决于您的实现,我认为这仍然有意义。标准化功能的目标不是跨平台性能,而是可以在真空中证明正确的可移植代码。

我希望您的工具链能够提供有关此类工作原理的更多信息,甚至可能会影响您对工具链的选择!但是,他们在这方面拥有自由是有道理的,就像在其他领域一样。毕竟,那里有许多目标平台(理论上是无限的),都有自己的潜力和怪癖。

未来的标准可能会进一步限制日程安排,以便将实施者放到后面一点点,但我个人不会指望它。


0
投票

调度C ++ 17 STL算法是实现定义的。而且,C ++ 17不保证并行执行。它只允许并行性。

类execute- parallel_policy是一种执行策略类型,用作唯一类型来消除并行算法重载的歧义,并指示并行算法的执行可以并行化

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