Maison >développement back-end >C++ >Les algorithmes parallèles C 17 sont-ils vraiment prêts pour le Prime Time ?

Les algorithmes parallèles C 17 sont-ils vraiment prêts pour le Prime Time ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 07:43:31487parcourir

 Are C  17 Parallel Algorithms Really Ready for Prime Time?

La mise en œuvre des algorithmes parallèles C 17 est-elle prête ?

Malgré la promesse de versions parallélisées d'algorithmes populaires en C 17, la disponibilité et la mise en œuvre de ces fonctionnalités peuvent prêter à confusion.

Initialement, ces fonctionnalités étaient anticipées dès 2017, mais les mises en œuvre pratiques ont mis plus de temps à se matérialiser. À l'heure actuelle, la situation est la suivante :

GCC 9 avec TBB requis

GCC 9, le compilateur par défaut d'Ubuntu 19.10, prend en charge les algorithmes parallèles via les Thread Building Blocks (à déterminer). TBB doit être installé séparément, mais le processus est simple.

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

Installation d'Ubuntu 18.04

Ubuntu 18.04 nécessite un processus d'installation plus complexe, car TBB n'est pas disponible dans une version compatible via les référentiels par défaut. Les commandes ci-dessous fournissent des instructions automatisées et testées.

# 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

Analyse du programme de test

Pour démontrer l'efficacité des algorithmes parallèles, un programme de test comparant les vitesses de tri des algorithmes parallèles et des implémentations en série ont été fournies. Sur Ubuntu 19.10, le tri de 100 millions de nombres a montré une amélioration significative des performances pour la version parallèle.

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

Messages d'erreur

En cas de dépendances manquantes ou de TBB obsolète version, les messages d'erreur suivants peuvent être rencontrés :

  1. TBB manquant :

    fatal error: tbb/blocked_range.h: No such file or directory
  2. Obsolète À déterminer :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn