首页 > 后端开发 > C++ > 正文

C 17 并行算法真的准备好迎接黄金时代了吗?

Barbara Streisand
发布: 2024-10-27 07:43:31
原创
404 人浏览过

 Are C  17 Parallel Algorithms Really Ready for Prime Time?

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版本,可能会遇到以下错误消息:

  1. 缺少 TBB:

    fatal error: tbb/blocked_range.h: No such file or directory
    登录后复制
  2. 已过时待定:

    #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.
    登录后复制

以上是C 17 并行算法真的准备好迎接黄金时代了吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!