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

atb*_*atb 2 c++ parallel-processing stl c++17

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

Lig*_*ica 6

据我所知,根据措辞,这些细节完全在实现规范的范围内,正如人们所期望的那样.标准通常不会保证任何类型的绝对性能,只有复杂性要求,正如您在这种情况下所看到的那样.

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

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

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