首页 >后端开发 >C++ >如何让 C 17 并行算法正常工作?

如何让 C 17 并行算法正常工作?

DDD
DDD原创
2024-10-26 10:07:031010浏览

 How Can I Get C  17 Parallel Algorithms Working?

C 17 并行算法已经实现了吗?

问题:

尽管尝试实现C 17 标准中引入的新并行库功能,作者遇到了编译错误。他们质疑这些算法是否已经实现。

答案:

GCC 9 和 TBB 2018 是第一个支持 C 17 并行算法的。不过,TBB 必须单独安装。

安装说明:

Ubuntu 19.10:

sudo apt install gcc libtbb-dev
g++ -ggdb3 -O3 -std=c++17 -Wall -Wextra -pedantic -o main.out main.cpp -ltbb
./main.out

Ubuntu 18.04:

# Install GCC 9
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9

# Compile libtbb from source.
sudo apt-get build-dep libtbb-dev
git clone https://github.com/intel/tbb
cd tbb
git checkout 2019_U9
make -j `nproc`
TBB="$(pwd)"
TBB_RELEASE="${TBB}/build/linux_intel64_gcc_cc7.4.0_libc2.27_kernel4.15.0_release"

# Use them to compile our test program.
g++-9 -ggdb3 -O3 -std=c++17 -Wall -Wextra -pedantic -I "${TBB}/include" -L 
"${TBB_RELEASE}" -Wl,-rpath,"${TBB_RELEASE}" -o main.out main.cpp -ltbb
./main.out

性能分析:

在具有 4 核/8 线程和 2 个 16GiB RAM 的 Lenovo ThinkPad P51 笔记本电脑上进行测试,并行对于 1 亿个数字的输入大小,排序速度比串行版本快约 4.5 倍。

错误消息:

  • 如果未安装 TBB :

    fatal error: tbb/blocked_range.h: No such file or directory
  • 如果 TBB 版本太旧:

    #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.

以上是如何让 C 17 并行算法正常工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn