首頁  >  文章  >  後端開發  >  C 17 平行演算法真的準備好迎接黃金時代了嗎?

C 17 平行演算法真的準備好迎接黃金時代了嗎?

Barbara Streisand
Barbara Streisand原創
2024-10-27 07:43:31405瀏覽

 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn