Heim  >  Artikel  >  Backend-Entwicklung  >  Sind C 17-Parallelalgorithmen wirklich bereit für die Hauptsendezeit?

Sind C 17-Parallelalgorithmen wirklich bereit für die Hauptsendezeit?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 07:43:31405Durchsuche

 Are C  17 Parallel Algorithms Really Ready for Prime Time?

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:

  1. Missing TBB:

    fatal error: tbb/blocked_range.h: No such file or directory
  2. 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!

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