Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Compute Unified Device Architecture — Wikipédia
Compute Unified Device Architecture — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
Compute Unified Device Architecture

Description de l'image Nvidia CUDA Logo.jpg.
Informations
Développé par NvidiaVoir et modifier les données sur Wikidata
Première version 23 juin 2007Voir et modifier les données sur Wikidata
Dernière version 13.0.2 (9 octobre 2025)[1]Voir et modifier les données sur Wikidata
Système d'exploitation Microsoft Windows, Linux et macOSVoir et modifier les données sur Wikidata
Type Pile de logiciels
Interface de programmationVoir et modifier les données sur Wikidata
Licence Licence propriétaireVoir et modifier les données sur Wikidata
Site web developer.nvidia.com/cuda-zoneVoir et modifier les données sur Wikidata

modifier - modifier le code - voir Wikidata (aide)

Schéma de principe de l'architecture CUDA

CUDA (initialement l'acronyme de Compute Unified Device Architecture[2]) est une technologie propriétaire[3] de GPGPU (General-Purpose Computing on Graphics Processing Units), c'est-à-dire utilisant un processeur graphique (GPU) pour exécuter des calculs généraux à la place du processeur central (CPU). En effet, ces processeurs comportent couramment de l'ordre d'un millier de circuits de calcul fonctionnant typiquement à 1 GHz, ce qui représente un potentiel très supérieur à un processeur central à 4 GHz, fût-il multicœurs et multi-threads. Cette utilisation requiert que le calcul à effectuer soit parallélisable.

CUDA permet de programmer des GPU en C++. Elle est développée par Nvidia, initialement pour ses cartes graphiques GeForce 8, et utilise un pilote unifié utilisant une technique de streaming (flux continu).

Le premier kit de développement pour CUDA est publié le 15 février 2007[4].

Applications

[modifier | modifier le code]

Est réalisable en CUDA tout ce qui demande du calcul intensif maillable en deux ou trois dimensions, ainsi que ce qui est décomposable en calculs indépendants sur des facteurs premiers, tel que cassage de codes, cassage de mot de passe[5], calculs de structures, simulation de fluides, algorithmes de recuit simulé, calculs économétriques sur de très grandes matrices (des techniques de découpages de ces matrices en blocs permettent de largement en paralléliser le produit).

Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?

Architectures reconnues par CUDA

[modifier | modifier le code]

Architecture Tesla

[modifier | modifier le code]

L'architecture Tesla, qui offre selon Nvidia la puissance de calcul d'un superordinateur (4 téraflops en simple précision, 80 gigaflops en double précision) pour une somme de 10 000 dollars, est construite sur CUDA.

Architecture Fermi (obsolète)

[modifier | modifier le code]

L'architecture Fermi, introduite en 2010 avec le GF100, est maintenant obsolète, les versions de CUDA ultérieures aux versions 8.0.x ne la prenant pas en charge.

Architecture Pascal

[modifier | modifier le code]

L'architecture Pascal, introduite en 2016 avec les cartes GTX1080 et GTX1070 à 2560 cœurs (gravure en 16 nm) et qui utilise de la GDDR5X surcadençable à 2,1 GHz, est également utilisable avec CUDA. NVidia lui annonce 11 téraflops en simple précision.

Architecture Volta

[modifier | modifier le code]

L'architecture Volta, conçue pour des usages professionnels, a été introduite en 2017 et intègre la carte V100, première architecture de NVidia à introduire l'usage des Tensor Cores, des cœurs d'arithmétique spéciaux qui permettent d'accélérer grandement les calculs de matrices en réduisant la précision de 32 à 16 bit[6].

Architecture Turing

[modifier | modifier le code]

L'architecture Turing, introduite en 2018 avec les RTX 20, succède aussi à Pascal, mais vise les particuliers, contrairement à Volta. Elle possède de nouvelles unités arithmétiques en plus de Tensor Cores améliorés, les RT Cores, qui eux permettent d'accélérer les calculs de ray tracing. Cependant ces derniers ne sont pas programmables via CUDA[7].

Programmation

[modifier | modifier le code]

CUDA présente plusieurs particularités par rapport à la programmation en C, en proposant d'effectuer des calculs génériques sur GPU :

  • hiérarchisation explicite des zones de mémoire (privée, locale, globale) permettant d'organiser finement les transferts entre elles ;
  • regroupement des threads en grilles de grilles : grille 1D, 2D ou 3D locale de threads pouvant se partager rapidement la mémoire locale. Les grilles locales sont ordonnées en grille globale permettant d'accéder à la mémoire globale.

Quelques réalisations combinent l'usage du langage Go, très orienté sur la programmation de processus concurrents et la gestion de mémoire sans fuites, avec celui de CUDA[8].

Avantages

[modifier | modifier le code]
  • Accès relativement standardisé à la puissance de calcul.
  • Un programme réalisé avec CUDA reste utilisable sur plus d'une génération de matériel.

Limites

[modifier | modifier le code]
  • Les vitesses de transfert entre l'hôte et le client peuvent être un goulet d'étranglement ; il peut être évité par des copies asynchrones.
  • Regroupement des threads par groupe de trente-deux, pour des questions de performances (les warps). Les divergences au sein d'un warp, dues aux exécutions conditionnelles, peuvent nuire grandement aux performances. Il s'agit d'une limitation due au modèle SIMD. De ce fait, tous les algorithmes ne gagnent pas à être portés sur CUDA, et plus généralement sur un modèle SIMD.
  • Un code C valide peut être rejeté à cause des contraintes matérielles, telles que le manque de mémoire ou le nombre de threads.
  • Les premières versions (1.x) de CUDA ne supportent pas la récursion, les pointeurs de fonctions, et d'autres limites qui tendent à disparaître.
  • La précision des calculs : la double précision n'est disponible que depuis la version 1.3. De plus, la norme IEEE 754 n'est que partiellement atteinte : en double précision, le seul mode d'arrondi est round-to-nearest-even. En simple précision, les nombres ne sont pas dénormalisés, le signal NaN est absent et les deux seuls modes d'arrondi sont chop et round-to-nearest even. Ces particularités ne sont pas valables à partir des GPU de Compute Capability 2.0[9].
  • Seuls les GPU nVidia supportent CUDA, les fabricants concurrents ne peuvent pas l'implémenter[10],[3].

Exemples

[modifier | modifier le code]

Exemple avec émulation de carte

[modifier | modifier le code]
#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <cuda_runtime.h>

__global__
void mykernel(float *A1, float *A2, float *R)
{
    int p = threadIdx.x;
    R[p] = A1[p] + A2[p];
}

int main()
{
    float A1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    float A2[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
    float R[9];

    // 9 additions, aucune boucle !
    mykernel<<<1 ,9>>>(A1, A2, R);

    // sortie à l'ecran
    for (int i = 0; i < 9; i++) {
        printf("%f\n", R[i]);
    }
}

Cet exemple fonctionne seulement si on émule la carte graphique, car on ne recopie pas les données sur la carte. L'émulation a été supprimée à partir de CUDA 3.1[11][réf. non conforme].

Compilation par :

nvcc -deviceemu -o run prog.cu

Exemple avec une carte graphique NVidia

[modifier | modifier le code]
#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <cuda_runtime.h>

__global__
void mykernel(float *A1, float *A2, float *R)
{
    int p = threadIdx.x;
    R[p] = A1[p] + A2[p];
}
 
int main()
{
    float A1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    float A2[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
    float R[9];
    int taille_mem = sizeof(float) * 9;

    // on alloue de la memoire sur la carte graphique
    float *a1_device;
    float *a2_device;
    float *r_device;
    cudaMalloc((void**) &a1_device, taille_mem);
    cudaMalloc((void**) &a2_device, taille_mem);
    cudaMalloc((void**) &r_device, taille_mem);

    // on copie les donnees sur la carte
    cudaMemcpy(a1_device, A1, taille_mem, cudaMemcpyHostToDevice);
    cudaMemcpy(a2_device, A2, taille_mem, cudaMemcpyHostToDevice);
        
    //9 additions, aucune boucle !
    mykernel<<<1, 9>>>(a1_device, a2_device, r_device);
 	
    // on recupere le resultat
    cudaMemcpy(R, r_device, taille_mem, cudaMemcpyDeviceToHost);
    // sortie à l'ecran
    for(int i = 0; i < 9; i++) {
        printf("%f\n", R[i]);
    }
}

Compilation par :

nvcc -o add_cuda add_cuda.cu

Notes et références

[modifier | modifier le code]
  1. ↑ « Index of /compute/cuda/redist » (consulté le 19 novembre 2025)
  2. ↑ (en) Anand Lal Shimpi et Wilson, Derek, « Nvidia's GeForce 8800 (G80): GPUs Re-architected for DirectX 10 », AnandTech, 8 novembre 2006 (consulté le 16 mai 2015).
  3. ↑ a et b (en) Agam Shah, « Nvidia not totally against third parties making CUDA chips », sur theregister.com (consulté le 25 avril 2024).
  4. ↑ (en) « http://news.developer.nvidia.com/2007/02/cuda_for_gpu_co.html »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?), sur Nvidia.
  5. ↑ « Cryptohaze », sur SourceForge (consulté le 13 août 2020).
  6. ↑ (en-US) « Programming Tensor Cores in CUDA 9 », sur NVIDIA Technical Blog, 17 octobre 2017 (consulté le 12 septembre 2024).
  7. ↑ (en-US) « NVIDIA Turing Architecture In-Depth », sur NVIDIA Technical Blog, 14 septembre 2018 (consulté le 12 septembre 2024).
  8. ↑ https://hpcugent.github.io/easybuild/files/FOSDEM14/FOSDEM14_HPC_devroom_14_GoCUDA.pdf
  9. ↑ (en) « Floating Point and IEEE 754 », sur docs.nvidia.com (consulté le 12 septembre 2024).
  10. ↑ (en) « CUDA GPUs - Compute Capability », sur NVIDIA Developer (consulté le 25 avril 2024).
  11. ↑ https://developer.download.nvidia.com/compute/cuda/3_1/sdk/docs/CUDA_SDK_release_notes.txt

Voir aussi

[modifier | modifier le code]

Articles connexes

[modifier | modifier le code]
  • GPU
  • Fermi (microarchitecture)
  • Tesla
  • Hybrid Multicore Parallel Programming (HMPP)

Produits concurrents

[modifier | modifier le code]
  • OpenCL (API/langage créé à l'origine par Apple, sous licence BSD), et gérée par le Khronos Group Khronos OpenCL comme OpenGL.
  • Larrabee de Intel qui a donné naissance aux cartes accélératrices Xeon Phi
  • ATI Stream.
  • Compute Shaders de Direct3D 11

Liens externes

[modifier | modifier le code]

Installation de CUDA en fonction des systèmes d'exploitation

[modifier | modifier le code]
  • Sur Mandriva (vieux)
  • Sur Fedora
  • Sur Ubuntu
  • Sur Slackware

Architecture CUDA

[modifier | modifier le code]
  • (en) Page sur CUDA du site de Nvidia
  • Article sur CUDA Tom's Hardware
  • Explications sur CUDA du site Hardware.fr
  • Introduction à CUDA sur le site Developpez.com
  • Intel MIC
  • Khronos OpenCL
v · m
Technologies Nvidia
Processeur graphique
Premiers Chipsets
  • NV1
  • NV2 (en)
Série RIVA
  • RIVA 128 (en)
  • TNT (en)
  • TNT2 (en)
Série GeForce
  • GeForce 256
  • 2
  • 3
  • 4
  • FX
  • 6
  • 7
  • 8
  • 9
  • 200
  • 300
  • 400
  • 500
  • 600
  • 700
  • 800M
  • 900
  • 10
  • 20
  • 30
  • 40
Architectures
  • Curie (en)
  • Tesla
  • Fermi
  • Kepler
  • Maxwell
  • Pascal
  • Volta
  • Turing
  • Ampere
  • Ada Lovelace
  • Hopper
  • Blackwell
Autres séries
  • Quadro
  • Tesla
  • Nvidia DGX (en)
GPU pour console
  • NV2A
  • RSX (PlayStation 3)
  • Nvidia Shield
Électronique grand public
  • GeForce
  • Tegra
  • Nvidia Ion
Chipsets nForce
  • nForce 220/415/420
  • nForce2
  • nForce3
  • nForce4
  • nForce 500
  • nForce 600
  • nForce 700
  • nForce 900 (en)
Technologies
  • GeForce Grid
  • G-SYNC
  • Mobile PCI-Express Module
  • NVLink
  • Optimus
  • SLI
  • TurboCache (en)
Logiciels
  • Gelato
  • Cg
  • PureVideo (en)
  • CUDA
  • OptiX
  • PhysX
  • icône décorative Portail de l’informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Compute_Unified_Device_Architecture&oldid=228626802 ».
Catégories :
  • NVIDIA
  • Calcul parallèle
Catégories cachées :
  • Article contenant un lien mort
  • Wikipédia:ébauche informatique
  • Page utilisant P178
  • Page utilisant P571
  • Page utilisant P348
  • Page utilisant P306
  • Page utilisant P31
  • Page utilisant P275
  • Page utilisant P856
  • Article utilisant une Infobox
  • Article avec une section vide ou incomplète
  • Article avec une référence non conforme
  • Article contenant un appel à traduction en anglais
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id