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中文网其他相关文章!