C 17 并行算法实现准备好了吗?
尽管 C 17 中流行算法的并行化版本的承诺,但可用性和实现这些功能可能会令人困惑。
最初,早在 2017 年就预计了这些功能,但实际实现需要更长的时间才能实现。目前情况如下:
需要 TBB 的 GCC 9
GCC 9,Ubuntu 19.10 中的默认编译器,通过线程构建块支持并行算法(待定)。 TBB 必须单独安装,但过程很简单。
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 安装
Ubuntu 18.04 需要更复杂的安装过程,因为 TBB 不可用通过默认存储库的兼容版本。下面的命令提供了自动化的、经过测试的指令。
# 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
测试程序分析
为了演示并行算法的有效性,一个测试程序比较了并行算法的排序速度并提供了串行实现。在 Ubuntu 19.10 上,对 1 亿个数字进行排序显示了并行版本的显着性能改进。
./main.out 100000000 parallel 2.00886 s serial 9.37583 s
错误消息
如果缺少依赖项或过时的 TBB版本,可能会遇到以下错误消息:
缺少 TBB:
fatal error: tbb/blocked_range.h: No such file or directory
已过时待定:
#error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.
以上是C 17 并行算法真的准备好迎接黄金时代了吗?的详细内容。更多信息请关注PHP中文网其他相关文章!