【问题标题】:C++ compiler support for std::execution (parallel STL algorithms)C++ 编译器对 std::execution 的支持(并行 STL 算法)
【发布时间】:2021-06-05 11:03:38
【问题描述】:

我想使用std::sort 的并行版本,我可以在其中指定像std::execution::par_unseq 这样的执行策略。

我目前在Ubuntu Linux下使用clang++-10g++ 7.5.0,但是都没有找到需要的包含文件execution,所以显然这些编译器版本还不支持并行算法。

谁能告诉我clanggcc 的哪个版本支持这个功能?

【问题讨论】:

  • libstdc++ 9,还没有在 libc++ 中:en.cppreference.com/w/cpp/compiler_support
  • @AlanBirtles:非常感谢。 libstdc++ 的版本是否绑定到g++ 的版本或Ubuntu 的版本?我不清楚这种关系。在我的情况下,STL 的包含文件似乎在 '/usr/include/c++/7/' 中(也在 '/usr/include/boost/' 中),所以显然我有版本 7(是两者都使用的版本) “g++”和“clang++”?)。
  • 它通常与 g++ 的版本相同,但我不确定它是否必须是

标签: c++ c++17 std


【解决方案1】:

GCC 10 和 Clang 11 支持 C++17 执行策略。

这是一个演示示例https://gcc.godbolt.org/z/xahs5x1Kx

#include <execution>

int main()
{
    int a[] = {2,1};
    std::sort(std::execution::par_unseq, std::begin(a), std::end(a) );
    return a[0];
}

【讨论】:

  • 非常感谢。我可以确认g++-11.1 支持它。在我们的案例中,还需要安装新版本的英特尔线程构建模块库 (TBB-2019),另请参阅 stackoverflow.com/a/55989883/3852630
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2013-01-10
  • 2016-05-01
  • 2011-11-12
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
相关资源
最近更新 更多