是否有针对 C++17 STL 并行算法的标准调度程序规范,或者它是否完全依赖于实现?串行算法具有复杂性保证,但调度程序实现对于非统一任务负载的性能至关重要,规范是否解决了这个问题?如果没有标准化的调度程序,似乎很难保证跨平台性能。
最佳答案
据我所知 the wording ,这些细节完全在实现规范的范围内,正如人们所期望的那样。该标准通常不会努力保证任何类型的绝对性能,只有复杂性要求,正如您在本例中看到的那样。
最终,虽然您的源代码现在可以在完全标准定义的同时利用并行性,但运行程序的实际实际结果取决于您的实现,我认为这仍然有意义。标准化功能的目标不是跨平台性能,而是可以在真空中证明正确的可移植代码。
我希望您的工具链能够提供有关此类工作原理的更多信息,这甚至可能会影响您对工具链的选择!但他们在这方面拥有自由确实有意义,就像他们在其他领域所做的那样。毕竟,目标平台数量众多(理论上是无限的),每个平台都有自己的潜力和特点。
future 的标准可能会对调度施加进一步的限制,以便让实现者稍微落后一点,但我个人不会指望它。
关于c++ - 如何在 C++17 STL 并行算法中处理调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896047/