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

标签 c++ parallel-processing stl c++17

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

最佳答案

据我所知 the wording ,这些细节完全在实现规范的范围内,正如人们所期望的那样。该标准通常不会努力保证任何类型的绝对性能,只有复杂性要求,正如您在本例中看到的那样。

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

我希望您的工具链能够提供有关此类工作原理的更多信息,这甚至可能会影响您对工具链的选择!但他们在这方面拥有自由确实有意义,就像他们在其他领域所做的那样。毕竟,目标平台数量众多(理论上是无限的),每个平台都有自己的潜力和特点。

future 的标准可能会对调度施加进一步的限制,以便让实现者稍微落后一点,但我个人不会指望它。

关于c++ - 如何在 C++17 STL 并行算法中处理调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896047/

相关文章:

c# - 更新 UI 元素时锁定 Parallel Linq

r - 在 R 中并行计算时更改内核数

c++ - 如何从字符串中存储和检索 char*?

c++ - std::map 插入或 std::map 查找?

c++ - 同时将多个十六进制数附加到 QByteArray

c++ - 复合文字并通过GCC在C++中通过引用传递?

c++ - 从 unsigned char* 到 const wchar_t* 的转换

c - 使用 openmp 并行化 C 代码

c++ - 使用单个值初始化 std::vector - 重复或 push_back()?

C++ STL 使用一组指针访问类的成员