gpt4 book ai didi

c++ - 结合 std::execution 和 OpenMP 是否可取?

转载 作者:行者123 更新时间:2023-11-30 03:13:26 25 4
gpt4 key购买 nike

我使用 OpenMP 已经有一段时间了。最近,在一个新项目中,我选择使用 c++17 来实现某些功能。

因此,我一直关注允许并行化算法的 std::execution。这看起来真的很强大和优雅,但它们是 OpenMP 的很多功能,它们非常有用,但不容易与算法(barrier、SIMD、critical 等)一起使用。

所以我想将 std::execution::par(或 unseq_par)与 OpenMP 混合使用。这是个好主意,还是我应该只使用 OpenMP?

最佳答案

很遗憾,这不受官方支持。它可能会或可能不会工作,具体取决于实现方式,但它不可移植。

只有最新版本 OpenMP 5.0 甚至定义了与 C++11 的交互。通常,使用 C++11 及以后的任何内容“可能会导致未指定的行为”。虽然 OpenMP 规范的 future 版本有望解决以下功能,但目前使用它们可能会导致未指定的行为。

  • 对齐支持
  • 标准布局类型
  • 允许移动结构抛出
  • 定义移动特殊成员函数
  • 并发
  • 数据依赖排序:原子和内存模型
  • 标准库的补充
  • 线程本地存储
  • 并发动态初始化和销毁​​
  • C++11 库

虽然未提及 C++17 及其特定的高级并行性支持,但从该列表中可以清楚地看出,它不受支持。

关于c++ - 结合 std::execution 和 OpenMP 是否可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58710115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com