Ist die Implementierung paralleler C 17-Algorithmen bereit?
Trotz des Versprechens parallelisierter Versionen beliebter Algorithmen in C 17 ist die Verfügbarkeit und Implementierung von Diese Funktionen können verwirrend sein.
Ursprünglich wurden diese Funktionen bereits 2017 erwartet, aber die praktische Umsetzung dauerte länger. Derzeit ist die Situation wie folgt:
GCC 9 mit TBB erforderlich
GCC 9, der Standard-Compiler in Ubuntu 19.10, unterstützt parallele Algorithmen durch Thread Building Blocks (TBB). TBB muss separat installiert werden, aber der Vorgang ist unkompliziert.
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-Installation
Ubuntu 18.04 erfordert einen aufwändigeren Installationsprozess, da TBB nicht verfügbar ist in einer kompatiblen Version über die Standard-Repositorys. Die folgenden Befehle bieten automatisierte, getestete Anweisungen.
# 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
Testprogrammanalyse
Um die Wirksamkeit paralleler Algorithmen zu demonstrieren, ein Testprogramm, das die Sortiergeschwindigkeiten paralleler Algorithmen vergleicht und serielle Implementierungen wurden bereitgestellt. Unter Ubuntu 19.10 zeigte das Sortieren von 100 Millionen Zahlen eine deutliche Leistungsverbesserung für die Parallelversion.
./main.out 100000000 parallel 2.00886 s serial 9.37583 s
Fehlermeldungen
Bei fehlenden Abhängigkeiten oder einem veralteten TBB Version können folgende Fehlermeldungen auftreten:
Missing TBB:
fatal error: tbb/blocked_range.h: No such file or directory
Veraltet TBB:
#error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.
Das obige ist der detaillierte Inhalt vonSind C 17-Parallelalgorithmen wirklich bereit für die Hauptsendezeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!