Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich C 17-Parallelalgorithmen zum Laufen bringen?

Wie kann ich C 17-Parallelalgorithmen zum Laufen bringen?

DDD
DDDOriginal
2024-10-26 10:07:03898Durchsuche

 How Can I Get C  17 Parallel Algorithms Working?

Sind C 17-Parallelalgorithmen bereits implementiert?

Frage:

Trotz der Implementierungsversuche Bei den neuen Funktionen der Parallelbibliothek, die im C 17-Standard eingeführt wurden, stieß der Autor auf Kompilierungsfehler. Sie stellten in Frage, ob diese Algorithmen bereits implementiert wurden.

Antwort:

GCC 9 und TBB 2018 sind die ersten, die die C 17-Parallelalgorithmen unterstützen. TBB muss jedoch separat installiert werden.

Installationsanleitung:

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

Leistungsanalyse:

Test auf einem Lenovo ThinkPad P51 Laptop mit 4 Kernen/8 Threads und 2x 16GiB RAM, parallel sort war etwa 4,5-mal schneller als die serielle Version für Eingabegrößen von 100 Millionen Zahlen.

Fehlermeldungen:

  • Wenn TBB nicht installiert ist :

    fatal error: tbb/blocked_range.h: No such file or directory
  • Wenn die TBB-Version zu alt ist:

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

Das obige ist der detaillierte Inhalt vonWie kann ich C 17-Parallelalgorithmen zum Laufen bringen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn