Passer aux informations sur le produit
Programmation du traitement parallèle GPU basée sur CUDA
Programmation du traitement parallèle GPU basée sur CUDA
Description
Introduction au livre
Traitez plus de données, plus rapidement, grâce à la technologie GPGPU et à CUDA !

À une époque où l'utilisation de processeurs à huit cœurs n'a rien d'étonnant, le GPGPU permet aux GPU de gérer les calculs du processeur, leur permettant ainsi de traiter plus rapidement de plus grandes quantités de données.
« Programmation de traitement parallèle basée sur CUDA » est basé sur CUDA, une architecture GPGPU développée par NVIDIA, et enseigne le traitement parallèle qui révolutionne la vitesse et l'efficacité sous divers aspects.
De plus, en commençant par la programmation CUDA dans Visual Studio, nous examinerons le code de traitement parallèle ligne par ligne et obtiendrons une compréhension détaillée de son fonctionnement au sein de l'architecture informatique à l'aide d'images.
  • Vous pouvez consulter un aperçu du contenu du livre.
    Aperçu

indice
Chapitre 1 : Aperçu du GPGPU et du traitement parallèle

1.1 Programmation GPGPU et GPU
1.2 Concept et nécessité du traitement parallèle
1.2.1 Concept de traitement parallèle
1.2.2 La nécessité du traitement parallèle
1.2.3 Nécessité de la programmation parallèle
1.3 Matériel de traitement parallèle
__1.3.1 Taxonomie de Flynn
1.3.2 Systèmes à mémoire partagée et systèmes à mémoire distribuée
Architecture SIMT GPU __1.3.3
_1.4 Comparaison des processeurs et des cartes graphiques
1.4.1 Contexte et orientation du développement des GPU
1.4.2 Processeur vs. Carte graphique
1.5 Performances du traitement parallèle
__1.5.1 Métriques de performance du traitement parallèle
__1.5.2 Loi d'Amdahl

Chapitre 2 : Présentation de CUDA

2.1 Introduction à CUDA
__2.1.1 API du pilote et API d'exécution
__2.1.2 GPU compatible CUDA
__2.1.3 Performances du GPU
__2.1.4 Capacité de calcul CUDA
__2.1.5 Vérification de mon GPU
2.2 Configuration de l'environnement de développement CUDA
__2.2.1 Installation du kit d'outils CUDA
__2.2.2 Environnement d'écriture et de compilation de programmes CUDA
_2.3 Bonjour CUDA
__2.3.1 Hôte et périphérique
__2.3.2 Programme CUDA
__2.3.3 Bonjour CUDA - Votre premier programme CUDA
__2.3.4 Mots-clés CUDA C/C++
__2.3.5 Exécution du noyau et configuration d'exécution

Chapitre 3 : Flux de base des programmes CUDA

3.1 Structure et flux des programmes CUDA
_3.2 API de mémoire de base CUDA
3.2.1 API d'allocation et d'initialisation de l'espace mémoire du périphérique
__3.2.2 API de copie de données mémoire hôte-périphérique
3.3 Programme de somme vectorielle écrit en CUDA
3.3.1 Allocation de mémoire du périphérique
__3.3.2 Copie du vecteur d'entrée (mémoire hôte → mémoire du périphérique)
__3.3.3 Appel du noyau de somme vectorielle
__3.3.4 Copie du vecteur de résultat (mémoire du périphérique → mémoire de l'hôte)
3.3.5 Libération de la mémoire du périphérique
__3.3.6 Programme de somme vectorielle basé sur CUDA (code complet)
3.4 Mesure des performances des algorithmes CUDA
3.4.1 Temps d'exécution du noyau
3.4.2 Durée du transfert de données
3.4.3 Mesure et analyse des performances d'un programme de somme vectorielle basé sur CUDA

Chapitre 4 Hiérarchie des threads CUDA

_4.1 Hiérarchie des threads CUDA
__4.1.1 Hiérarchie des threads CUDA
__4.1.2 Variables intégrées pour la hiérarchie des threads CUDA
4.1.3 Limites de taille maximale pour les grilles et les blocs
4.2 Structure des threads CUDA et appels au noyau
4.2.1 Configuration de l'organisation des threads et des appels au noyau
4.2.2 Exemple de configuration et de vérification de la disposition des threads
4.3 Programme CUDA de somme vectorielle pour les grands vecteurs - Disposition des threads

Chapitre 5 : Organisation et indexation des fils de discussion

5.1 Trouver la somme des vecteurs supérieurs à 1 024
5.1.1 Détermination de la disposition des filetages
5.1.2 Calcul de l'index des données auxquelles chaque thread doit accéder
__5.1.3 Écriture d'un noyau reflétant l'indice calculé
_5.2 Indexation des threads
5.2.1 Apparition du tableau en mémoire
__5.2.2 Exercice d'indexation des threads I - Numéros de threads globaux
__5.2.3 Exercice d'indexation des threads II - Indexation de données bidimensionnelles
_5.3 Programme de somme de matrices à grande échelle basé sur CUDA
__5.3.1 Grille 2D, disposition en blocs 2D
__5.3.2 Grille 1D, disposition en blocs 1D
__5.3.3 Grille 2D, disposition en blocs 1D

Chapitre 6 Modèle d'exécution CUDA

6.1 Architecture GPU NVIDIA
__6.1.1 Multiprocesseur de flux
__6.1.2 Cœurs CUDA
6.2 Hiérarchie des threads CUDA et matériel GPU
__6.2.1 Grille → GPU
__6.2.2 Bloc de threads → SM
__6.2.3 Warp & Thread → Cœurs CUDA dans SM
6.2.4 Surcharge de changement de contexte nulle
__6.2.5 Divergence de distorsion
_6.3 Stratégies pour masquer la latence d'accès à la mémoire
6.4 Vérification des informations du GPU

Chapitre 7 : Programme de multiplication matricielle basé sur CUDA

_7.1 Qu'est-ce que la multiplication matricielle ?
7.2 Configuration de la disposition des threads
7.2.1 Disposition des threads en fonction des matrices d'entrée A et B
7.2.2 Disposition des threads en fonction de la matrice de résultats C
_7.3 Indexation des fils de discussion
__7.3.1 Si la taille de la matrice C est inférieure à la taille maximale des blocs (1 024)
__7.3.2 Si la taille de la matrice C est supérieure à la taille maximale des blocs (1 024)
7.4 Mise en œuvre et évaluation des performances
7.4.1 Détails de mise en œuvre
7.4.2 Évaluation des performances
7.4.3 Problèmes de précision des opérations en virgule flottante

Chapitre 8 Hiérarchie de la mémoire CUDA

8.1 Hiérarchie de la mémoire des systèmes informatiques
_8.2 Hiérarchie de mémoire CUDA
8.2.1 Mémoire au niveau du thread
8.2.2 Mémoire au niveau bloc
8.2.3 Mémoire au niveau de la grille
__8.2.4 Cache GPU
__8.2.5 Résumé de la mémoire CUDA
8.3 Modèle de mémoire CUDA et performances
8.3.1 Maximisation du parallélisme
8.3.2 Vitesse de distorsion active

Chapitre 9 Mémoire partagée CUDA

_9.1 Comment utiliser la mémoire partagée
9.1.1 Stockage des données partagées entre les threads au sein d'un bloc de threads
__9.1.2 Cache L1 (cache géré par le matériel)
__9.1.3 Cache géré par l'utilisateur
_9.2 Exemple d'utilisation de la mémoire partagée - Multiplication de matrices inférieures à 1 024

Chapitre 10 : Programme de multiplication matricielle utilisant la mémoire partagée

_10.1 Définition du problème et code de base
10.2 Conception et implémentation de l'algorithme
__10.2.1 Stratégie 1 : Charger certaines lignes de la matrice A et certaines colonnes de la matrice B dans la mémoire partagée
__10.2.2 Stratégie 2 : Divisez les lignes et les colonnes en blocs et chargez-les dans la mémoire partagée.
10.3 Évaluation des performances

Chapitre 11 : Optimisation des performances d’accès à la mémoire

11.1 Optimisation de l'accès à la mémoire globale
__11.1.1 Accès à la mémoire alignée et fusionnée
__11.1.2 Exemple : Disposition des threads d’un noyau de multiplication matricielle
__11.1.3 Tableau de structures vs.
Structure du tableau
11.2 Optimisation de l'accès à la mémoire partagée
__11.2.1 Banque de mémoire et conflits de banque
__11.2.2 Exemple : Noyau de multiplication matricielle utilisant la mémoire partagée

Chapitre 12 Synchronisation et concurrence

_12.1 Synchronisation
__12.1.1 Synchronisation dans CUDA
_12.2 Exécution simultanée avec les flux CUDA
__12.2.1 Définition et caractéristiques des flux CUDA
__12.2.2 Exécution simultanée des commandes CUDA
__12.2.3 Exemple : Masquage des frais généraux de transfert de données
__12.2.4 Synchronisation des flux
_12.3 Événements CUDA
__12.3.1 API d'événements CUDA
__12.3.2 Mesure du temps d'exécution par noyau et flux à l'aide d'événements CUDA
_12.4 Calcul parallèle multi-GPU et hétérogène
__12.4.1 Utilisation de plusieurs GPU
__12.4.2 Calcul parallèle hétérogène

Image détaillée
Image détaillée 1

Avis de l'éditeur
Avec des images d'architecture informatique
Programmation du traitement parallèle en bref

Si vous n'apprenez que la programmation monothread, il vous sera difficile d'élargir et d'utiliser de bons modèles ou techniques dans divers domaines.
À l'heure actuelle, le GPGPU peut être utilisé de manière novatrice dans des secteurs tels que le développement de jeux haute définition, l'intelligence artificielle, l'analyse de données massives et l'exploration de données.
Grâce à « Programmation de traitement parallèle basée sur CUDA », apprenons en détail tout sur le traitement parallèle, depuis les différents termes et définitions de dictionnaire liés au GPGPU et aux processeurs parallèles, jusqu'à leur fonctionnement dans l'architecture informatique, et même comment les utiliser pour améliorer la vitesse de calcul.

Les lecteurs qui ont besoin de ce livre

Ceux qui veulent découvrir la technologie GPGPU
Utilisateurs intermédiaires du langage C/C++ souhaitant comprendre la programmation parallèle
• Ceux qui souhaitent en savoir plus sur le traitement informatique ainsi que sur les algorithmes
Pour ceux qui ont besoin d'une optimisation du traitement parallèle basée sur CUDA
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 23 mai 2023
- Nombre de pages, poids, dimensions : 312 pages | 188 × 245 × 30 mm
- ISBN13 : 9791165922238
- ISBN10 : 1165922231

Vous aimerez peut-être aussi

카테고리