Maison > développement back-end > C++ > le corps du texte

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

Barbara Streisand
Libérer: 2024-10-27 07:43:31
original
404 Les gens l'ont consulté

 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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
    Copier après la connexion
  2. Obsolète À déterminer :

    #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!