Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Algoritma Selari C 17 Benar-benar Bersedia untuk Masa Perdana?

Adakah Algoritma Selari C 17 Benar-benar Bersedia untuk Masa Perdana?

Barbara Streisand
Barbara Streisandasal
2024-10-27 07:43:31405semak imbas

 Are C  17 Parallel Algorithms Really Ready for Prime Time?

Adakah Perlaksanaan Algoritma Selari C 17 Sedia?

Walaupun menjanjikan versi selari algoritma popular dalam C 17, ketersediaan dan pelaksanaan ciri ini boleh mengelirukan.

Pada mulanya, ciri ini telah dijangkakan seawal 2017, tetapi pelaksanaan praktikal mengambil masa yang lebih lama untuk menjadi kenyataan. Setakat ini, keadaannya adalah seperti berikut:

GCC 9 dengan TBB Diperlukan

GCC 9, pengkompil lalai dalam Ubuntu 19.10, menyokong algoritma selari melalui Blok Bangunan Benang (TBB). TBB mesti dipasang secara berasingan, tetapi prosesnya adalah mudah.

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

Pemasangan Ubuntu 18.04

Ubuntu 18.04 memerlukan proses pemasangan yang lebih terlibat, kerana TBB tidak tersedia dalam versi yang serasi melalui repositori lalai. Arahan di bawah menyediakan arahan automatik yang diuji.

# 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

Analisis Program Ujian

Untuk menunjukkan keberkesanan algoritma selari, program ujian membandingkan kelajuan pengisihan selari dan pelaksanaan bersiri telah disediakan. Pada Ubuntu 19.10, pengisihan 100 juta nombor menunjukkan peningkatan prestasi yang ketara untuk versi selari.

./main.out 100000000
parallel 2.00886 s
serial 9.37583 s

Mesej Ralat

Sekiranya terdapat kebergantungan yang hilang atau TBB yang sudah lapuk versi, mesej ralat berikut mungkin ditemui:

  1. Tiada TBB:

    fatal error: tbb/blocked_range.h: No such file or directory
  2. Lapuk TBB:

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

Atas ialah kandungan terperinci Adakah Algoritma Selari C 17 Benar-benar Bersedia untuk Masa Perdana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn