如何在 C++17 STL 并行算法中处理调度?
How is scheduling handled in C++17 STL parallel algorithms?
C++17 STL 并行算法是否有标准调度程序规范,还是完全依赖于实现?串行算法具有复杂性保证,但调度程序实现对于非统一任务负载的性能至关重要,规范是否解决了这个问题?如果没有标准化的调度程序,似乎很难保证跨平台的性能。
据我从措辞中可以看出,正如人们所期望的那样,这些细节完全在实现规范的范围内。该标准通常不努力保证任何类型的绝对性能,只有复杂性要求,正如您在这种情况下看到的那样。
最终,虽然你的源代码现在可以利用并行性,同时完全是标准的,但运行程序的实际实际结果取决于你的实现,我认为这仍然是有意义的。标准化功能的目标不是跨平台性能,而是可以在真空中证明正确的可移植代码。
我希望您的工具链能提供有关此类工作原理的更多信息,这甚至可能会影响您对工具链的选择!但是,他们在这方面拥有自由确实是有道理的,就像他们在其他领域所做的那样。毕竟,那里有许多目标平台(理论上是无限的(,它们都有自己的潜力和怪癖。
可能是未来的标准对调度施加了进一步的限制,以便稍微把实施者踢到后面,但我个人不会指望它。
C++17 STL 算法的调度是实现定义的。 此外,C++17 不保证并行执行。它只允许并行性。
类 execution::p arallel_policy 是使用的执行策略类型 作为消除并行算法重载歧义的唯一类型,以及 表示并行算法的执行可以并行化
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何在c++中实现处理器调度模拟器
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 如何在 C++17 STL 并行算法中处理调度?
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- openMp 动态调度与按处理时间排序任务时的 LPT 调度相同吗?
- 用管道在C++中创建调度队列/线程处理程序:FIFO溢出
- OpenMP中调度程序对循环变量的处理
- Outlook插件:在带有调度指针的NewMail处理程序上