Polydesk-logotype
Polydesk.ai — Header

CUDA (Compute Unified Device Architecture)

CUDA est la plateforme de calcul parallèle et le modèle de programmation développés par NVIDIA qui permettent d’utiliser les GPU NVIDIA pour des calculs généraux, en particulier l’entraînement et l’inférence de modèles d’intelligence artificielle.

Si NVIDIA domine le marché de l’IA avec 80 à 90% de parts de marché, c’est au moins autant grâce à CUDA qu’à ses GPU. CUDA est un écosystème logiciel construit sur plus de 20 ans, avec plus de 4 millions de développeurs, des centaines de bibliothèques optimisées, et une intégration native dans tous les frameworks de machine learning majeurs (PyTorch, TensorFlow, JAX). Changer de GPU signifie changer tout l’écosystème logiciel qui dépend de CUDA, ce qui crée un coût de migration que peu d’organisations sont prêtes à assumer. C’est le « moat » (avantage concurrentiel durable) le plus puissant de NVIDIA.

CUDA en bref
Signification
Compute Unified Device Architecture
Éditeur
NVIDIA
Version actuelle
CUDA Toolkit 13.2 (10 mars 2026)
Première version
CUDA 1.0 (juin 2007)
Langages
C, C++, Fortran, Python (via wrappers)
Développeurs
4+ millions
Licence
Propriétaire (gratuit)
Architectures GPU supportées
Maxwell à Blackwell (et Rubin à venir)
OS
Linux, Windows (macOS abandonné depuis CUDA 10.2)
Alternatives
ROCm (AMD), oneAPI/SYCL (Intel), Metal (Apple), Vulkan Compute

Comment fonctionne CUDA

Le modèle de programmation

CUDA étend le C/C++ avec des mots-clés spéciaux qui permettent de définir des fonctions exécutées sur le GPU (appelées kernels). Un kernel est une fonction qui s’exécute en parallèle sur des milliers de threads GPU simultanément. Le programmeur définit la grille de threads (combien de blocs, combien de threads par bloc), et CUDA distribue l’exécution sur les cœurs du GPU.

// Exemple CUDA : addition de deux vecteurs __global__ void vectorAdd(float *a, float *b, float *c, int n) { int i = blockIdx.x * blockDim.x + threadIdx.x; if (i < n) { c[i] = a[i] + b[i]; } } // Lancement du kernel : 256 threads/bloc, assez de blocs pour N éléments int blocks = (N + 255) / 256; vectorAdd<<>>(d_a, d_b, d_c, N);

Ce modèle de programmation, bien que plus bas niveau que PyTorch ou TensorFlow, est ce qui a permis à NVIDIA de construire un écosystème de bibliothèques ultra-optimisées. Les développeurs d’applications IA n’écrivent généralement pas de kernels CUDA directement : ils utilisent des bibliothèques (cuBLAS, cuDNN, TensorRT) qui encapsulent des kernels CUDA optimisés par les ingénieurs NVIDIA.

Hiérarchie mémoire

CUDA expose une hiérarchie mémoire riche que les développeurs peuvent exploiter pour maximiser les performances. La mémoire globale (VRAM) est la plus grande mais la plus lente. La mémoire partagée (shared memory) est un cache rapide partagé entre les threads d’un même bloc. Les registres sont les plus rapides mais les plus limités. Les Tensor Cores (depuis Volta) sont des unités spécialisées accessibles via CUDA pour les multiplications matricielles mixtes (FP16, BF16, FP8, FP4, INT8).

La maîtrise de cette hiérarchie mémoire est ce qui sépare un kernel CUDA performant d’un kernel naïf. Les bibliothèques NVIDIA (cuBLAS, cuDNN) intègrent des années d’optimisation de l’accès mémoire, ce qui explique pourquoi il est presque toujours préférable d’utiliser ces bibliothèques plutôt que d’écrire ses propres kernels.

Le CUDA Toolkit

Le CUDA Toolkit est le package logiciel complet fourni par NVIDIA pour le développement sur GPU. La version actuelle est le Toolkit 13.2, sortie le 10 mars 2026. Il comprend :

Compilateur et runtime

nvcc : le compilateur CUDA qui compile le code C/C++ étendu avec les mots-clés CUDA. Il sépare le code hôte (CPU) du code device (GPU), compile le code GPU en PTX (une représentation intermédiaire) puis en code machine spécifique à l’architecture GPU cible. cudart : la bibliothèque runtime qui gère l’exécution des kernels, l’allocation mémoire sur le GPU, et les transferts CPU/GPU.

Bibliothèques de calcul

C’est la force principale de l’écosystème CUDA. Chaque bibliothèque est optimisée par des ingénieurs NVIDIA spécialisés et exploite les fonctionnalités spécifiques de chaque génération de GPU :

BibliothèqueFonctionUsage IA
cuBLASAlgèbre linéaire (BLAS)Multiplications matricielles, cœur du training/inference
cuDNNPrimitives de deep learningConvolutions, normalisation, attention, activation
TensorRTOptimisation et inférenceCompilation et accélération de modèles pour la production
cuFFTTransformée de FourierTraitement de signal, audio
cuSPARSEAlgèbre creuseModèles sparse, graphes
cuSOLVERFactorisation, systèmes linéairesEntraînement, optimisation
cuRANDGénération de nombres aléatoiresÉchantillonnage, initialisation
NCCLCommunication multi-GPUEntraînement distribué
Thrust / CUBAlgorithmes parallèles (sort, reduce)Prétraitement de données
nvJPEG / NPPTraitement d’imagesPipelines de données pour vision
cuBLAS et INT8-emulated FP64 Depuis CUDA 13.0, cuBLAS utilise automatiquement la multiplication matricielle FP64 émulée via INT8 si elle est plus rapide que la FP64 native. C’est une optimisation transparente qui tire parti de la puissance des Tensor Cores INT8 pour accélérer le calcul scientifique haute précision. Sur les GPU grand public (qui ont peu de matériel FP64 natif), le gain peut atteindre 6×.

Outils de développement

Le Toolkit inclut des outils de profilage et de débogage : Nsight Systems pour le profilage système global (identifier les goulots d’étranglement CPU/GPU), Nsight Compute pour le profilage de kernels individuels (analyser l’utilisation mémoire, le taux d’occupation des cœurs), et cuda-gdb pour le débogage de kernels CUDA.

Nouveautés de CUDA 13.x

La branche CUDA 13.x (lancée en août 2025) a apporté plusieurs changements importants. Le support de l’architecture Blackwell (B200, GB200) est complet, avec les nouvelles précisions FP4 et MXFP4 des Tensor Cores 5ème génération. L’introduction de cuTile, un DSL (Domain-Specific Language) pour la programmation par tuiles en Python, facilite l’écriture de kernels optimisés. Le Tile IR (Tile Instruction Set) offre une représentation intermédiaire portable pour les kernels basés sur des tuiles. Le Toolkit 13.2 a unifié les builds Tegra (embarqué) et desktop, simplifiant le développement pour les systèmes Jetson.

Côté obsolescence, CUDA 13 a retiré les API multi-device de Cooperative Groups (remplacées par des approches plus modernes) et le support des architectures Maxwell, Pascal et Volta est considéré comme « feature-complete » (maintenu mais sans nouvelles optimisations). Le driver Windows n’est plus bundlé avec le Toolkit depuis la version 13.1.

CUDA et l’intelligence artificielle

Intégration dans les frameworks ML

Tous les frameworks de deep learning majeurs sont optimisés pour CUDA en priorité :

PyTorch utilise CUDA comme backend GPU par défaut. La plupart des opérations PyTorch (matmul, conv2d, attention) appellent directement cuBLAS et cuDNN sous le capot. Le système torch.compile génère du code qui exploite les Tensor Cores automatiquement. TensorFlow a été historiquement le premier framework à intégrer CUDA profondément, bien que son adoption décline au profit de PyTorch et JAX. JAX (Google) compile vers XLA qui peut cibler CUDA pour les GPU NVIDIA. ONNX Runtime (Microsoft) supporte l’accélération CUDA et TensorRT pour l’inférence optimisée.

En pratique, quand un développeur écrit model.to('cuda') en PyTorch, c’est toute la pile CUDA qui se met en marche : allocation VRAM via cudart, multiplications via cuBLAS, convolutions via cuDNN, transferts CPU/GPU, synchronisation. Tout est transparent pour le développeur.

CUDA pour l’inférence locale

Pour l’inférence locale de LLM, CUDA est le backend le plus performant. llama.cpp avec le backend CUDA offre les meilleures vitesses de génération sur GPU NVIDIA, avec le support de tous les formats de quantification (Q4_0, K-quants, I-quants, F16). Ollama utilise CUDA via llama.cpp. Les serveurs d’inférence comme vLLM et TensorRT-LLM sont optimisés exclusivement ou principalement pour CUDA.

Vérifier la compatibilité CUDA de votre GPU Chaque GPU NVIDIA a un « compute capability » (CC) qui détermine les fonctionnalités CUDA supportées. Les GPU GeForce récents (RTX 30xx : CC 8.6, RTX 40xx : CC 8.9, RTX 50xx : CC 10.x) supportent toutes les fonctionnalités modernes. Pour les GPU plus anciens, vérifiez la liste officielle NVIDIA. Les GPU avec CC < 5.0 ne sont plus supportés par les versions récentes de CUDA.

L’écosystème CUDA étendu

CUDA-X : les bibliothèques spécialisées

Au-delà du Toolkit de base, NVIDIA propose CUDA-X, un ensemble de bibliothèques spécialisées qui couvrent des domaines allant de l’IA au HPC en passant par le traitement graphique. Ces bibliothèques incluent TensorRT (optimisation d’inférence), Triton Inference Server (serving de modèles en production), RAPIDS (data science accélérée GPU), cuDF (DataFrames GPU), cuML (machine learning classique accéléré), et DALI (pipeline de données pour le training).

CUDA en Python

Bien que CUDA soit nativement un écosystème C/C++, plusieurs wrappers Python permettent de l’utiliser directement. CuPy est un remplacement drop-in de NumPy qui exécute les opérations sur GPU via CUDA. Numba permet de compiler des fonctions Python en kernels CUDA avec un décorateur. PyCUDA offre un accès bas niveau à l’API CUDA depuis Python. Triton (OpenAI) est un langage/compilateur qui simplifie l’écriture de kernels GPU performants depuis Python, sans avoir à gérer manuellement la mémoire partagée et les synchronisations.

# CuPy : NumPy accéléré par CUDA import cupy as cp # Les opérations s'exécutent sur GPU automatiquement a = cp.random.randn(10000, 10000, dtype=cp.float32) b = cp.random.randn(10000, 10000, dtype=cp.float32) c = cp.matmul(a, b) # Multiplication sur GPU via cuBLAS # Résultat transférable vers NumPy import numpy as np c_cpu = cp.asnumpy(c)

Le « lock-in » CUDA : problème ou avantage ?

Le verrouillage CUDA est le sujet qui divise le plus la communauté IA. D’un côté, CUDA offre les meilleures performances, le plus grand écosystème de bibliothèques, et la plus grande stabilité. De l’autre, la dépendance à un seul fournisseur crée un risque stratégique et limite la concurrence sur les prix.

Plusieurs initiatives cherchent à réduire ce verrouillage. ROCm (AMD) implémente une API HIP quasi-identique à CUDA, permettant de porter du code CUDA vers AMD avec des modifications minimales. SYCL (Intel, via oneAPI) propose un standard ouvert pour le calcul hétérogène. Triton (OpenAI) génère du code qui cible CUDA mais aussi ROCm et potentiellement d’autres backends. MLIR et XLA abstraient le matériel sous-jacent pour les frameworks ML.

En pratique, la portabilité reste difficile. Les applications qui utilisent des bibliothèques CUDA spécifiques (cuDNN, TensorRT, NCCL) ne peuvent pas être portées vers d’autres backends sans réécriture significative. La domination de CUDA se maintient parce que l’écosystème est non seulement vaste mais aussi profondément intégré à chaque niveau de la pile logicielle IA.

Installation

Installer le CUDA Toolkit

Le CUDA Toolkit peut être installé de plusieurs manières :

# Via pip (depuis CUDA 13.x) pip install cuda-toolkit # Avec des composants spécifiques pip install cuda-toolkit[cublas,cusolver,cusparse] # Via le package manager (Ubuntu) # Ajouter le dépôt NVIDIA puis : sudo apt-get install cuda-toolkit-13-2 # Via conda conda install -c nvidia cuda-toolkit
Driver NVIDIA requis séparément Depuis CUDA 13.1, le Toolkit Windows ne bundle plus le driver NVIDIA. Vous devez installer le driver séparément depuis le site NVIDIA avant d’installer le Toolkit. Sur Linux, le driver peut être installé via le package manager ou le .run file de NVIDIA. Vérifiez toujours la compatibilité driver/Toolkit dans la matrice officielle.

Vérifier l’installation

# Vérifier la version CUDA installée nvcc --version # Vérifier le driver et le GPU détecté nvidia-smi # Vérifier depuis Python (PyTorch) python -c "import torch; print(torch.cuda.is_available())" python -c "import torch; print(torch.version.cuda)"

Historique

NVIDIA a lancé CUDA 1.0 en juin 2007, bien avant l’explosion du deep learning. À l’époque, l’objectif était d’ouvrir les GPU au calcul scientifique général (GPGPU). Les premiers utilisateurs étaient des physiciens, des ingénieurs en dynamique des fluides, et des chercheurs en simulation moléculaire.

Le tournant IA est arrivé en 2012 quand Alex Krizhevsky a utilisé deux GPU NVIDIA GeForce GTX 580 avec CUDA pour entraîner AlexNet, un réseau de neurones convolutionnel qui a révolutionné la vision par ordinateur. Depuis, chaque avancée majeure en deep learning a été entraînée sur des GPU NVIDIA via CUDA : les réseaux ResNet, les GAN, les Transformers, GPT, BERT, et tous les LLM modernes.

Les versions majeures ont ponctué cette évolution. CUDA 5 (2012) a introduit les graphes dynamiques de parallélisme. CUDA 7 (2015) a ajouté le support FP16 essentiel pour le mixed-precision training. CUDA 9 (2017) a introduit le support des Tensor Cores de Volta. CUDA 11 (2020) a supporté l’architecture Ampere et le BF16. CUDA 12 (2022) a supporté Hopper et le FP8. CUDA 13 (2025) supporte Blackwell et le FP4.

Le rythme de releases s’est aussi accéléré. CUDA 13.0 est sorti en août 2025, suivi de 13.0.1 (septembre), 13.0.2 (octobre), 13.1.0 (décembre 2025), 13.1.1 (janvier 2026), et 13.2.0 (mars 2026). Cette cadence rapide reflète la pression de l’écosystème IA qui exige un support immédiat pour chaque nouvelle architecture GPU et chaque nouveau format de données.

Un fait souvent oublié : CUDA a aussi permis à NVIDIA de pivoter d’une entreprise de GPU gaming vers le leader mondial de l’IA. Sans CUDA, les GPU NVIDIA n’auraient été « que » des cartes graphiques. C’est CUDA qui a transformé chaque GPU NVIDIA en accélérateur de calcul généraliste, créant un marché de centaines de milliards de dollars.

Alternatives à CUDA

AlternativeFournisseurMaturité IAForcesFaiblesses
ROCmAMDCorrecteAPI HIP compatible CUDA, open sourceMoins de bibliothèques, support variable
oneAPI/SYCLIntelEn progressionStandard ouvert, multi-vendeurÉcosystème IA encore limité
MetalAppleBonne (via MLX)Excellent sur Apple SiliconApple uniquement
Vulkan ComputeKhronos GroupBasiqueMulti-plateforme, standard ouvertPas de bibliothèques ML spécifiques
OpenCLKhronos GroupLimitéeMulti-vendeur historiqueEn déclin, remplacé par Vulkan et SYCL
Triton (OpenAI)OpenAIBonnePython natif, multi-backend en devenirEncore jeune, cible CUDA principalement

Verdict : Aucune alternative ne rivalise avec CUDA en maturité et en écosystème pour l’IA. ROCm est le challenger le plus crédible pour les GPU AMD. Metal via MLX est excellent sur Mac. Mais pour le développement IA professionnel, multi-cloud et à grande échelle, CUDA reste le standard de facto pour les prochaines années.


Questions fréquentes sur CUDA

Faut-il apprendre CUDA pour faire de l’IA ?

Non, pas directement. Les frameworks comme PyTorch et TensorFlow abstraient CUDA entièrement. Vous écrivez du Python, et les frameworks appellent les bibliothèques CUDA (cuBLAS, cuDNN) automatiquement. Apprendre CUDA est utile si vous développez des kernels GPU custom, si vous optimisez des performances à bas niveau, ou si vous travaillez sur des frameworks d’inférence. Pour 95% des développeurs IA, savoir que CUDA existe et comment l’installer suffit.

CUDA fonctionne-t-il sur les GPU AMD ou Intel ?

Non. CUDA est exclusif aux GPU NVIDIA. Pour les GPU AMD, l’alternative est ROCm avec l’API HIP (quasi-compatible CUDA) ou Vulkan. Pour Intel, c’est oneAPI/SYCL. Pour Apple, c’est Metal. Les frameworks ML (PyTorch, TensorFlow) supportent ces alternatives, mais avec un niveau de support et de performances généralement inférieur à CUDA.

Quelle version de CUDA installer ?

En mars 2026, CUDA 13.2 est la dernière version. Pour la plupart des projets IA, installez la version de CUDA recommandée par votre framework (PyTorch, TensorFlow). PyTorch pré-compile souvent des builds pour CUDA 12.4, 12.6 et 13.x. Vérifiez la page d’installation de votre framework. Si vous avez un GPU récent (RTX 50xx, Blackwell), CUDA 13.x est nécessaire.

CUDA fonctionne-t-il sur macOS ?

Non. NVIDIA a abandonné le support macOS avec CUDA 10.2 (2019), suite au conflit entre Apple et NVIDIA sur les drivers. Sur Mac, l’alternative est Metal pour le GPU et MLX pour le machine learning. llama.cpp utilise Metal pour l’inférence de LLM sur Mac. Si vous avez besoin de CUDA, vous devez utiliser Linux ou Windows.

Pourquoi CUDA est-il si difficile à remplacer ?

Trois raisons. La première est l’écosystème de bibliothèques : cuBLAS, cuDNN, TensorRT, NCCL sont optimisés par des dizaines d’ingénieurs NVIDIA spécialisés. Les alternatives n’ont pas cette profondeur. La seconde est l’inertie : 20 ans de code existant, de tutoriels, de formations, de recrutement basés sur CUDA. La troisième est le cercle vertueux : plus de développeurs utilisent CUDA, plus les bibliothèques sont optimisées, plus il est rationnel de choisir NVIDIA, ce qui attire plus de développeurs.

Polydesk.ai — Footer