Maison  >  Article  >  développement back-end  >  Comment puis-je faire fonctionner les algorithmes parallèles C 17 ?

Comment puis-je faire fonctionner les algorithmes parallèles C 17 ?

DDD
DDDoriginal
2024-10-26 10:07:03898parcourir

 How Can I Get C  17 Parallel Algorithms Working?

Les algorithmes parallèles C 17 sont-ils déjà implémentés ?

Question :

Malgré les tentatives de mise en œuvre Avec les nouvelles fonctionnalités de bibliothèque parallèle introduites dans le standard C 17, l'auteur a rencontré des erreurs de compilation. Ils se sont demandé si ces algorithmes avaient déjà été implémentés.

Réponse :

GCC 9 et TBB 2018 sont les premiers à prendre en charge les algorithmes parallèles C 17. Cependant, TBB doit être installé séparément.

Instructions d'installation :

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

Analyse des performances :

Test sur un ordinateur portable Lenovo ThinkPad P51 avec 4 cœurs/8 threads et 2x 16 Go de RAM, le parallèle le tri était environ 4,5 fois plus rapide que la version série pour des tailles d'entrée de 100 millions de chiffres.

Messages d'erreur :

  • Si TBB n'est pas installé :

    fatal error: tbb/blocked_range.h: No such file or directory
  • Si la version TBB est trop ancienne :

    #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