NVIDIA CUDA permet aux cartes gra­phiques de réaliser bien plus que le rendu d’images : elles peuvent aussi exécuter ra­pi­de­ment des calculs scien­ti­fiques complexes et des opé­ra­tions liées à l’IA. Sans CUDA et les autres tech­no­lo­gies d’ac­cé­lé­ra­tion, les progrès récents de l’IA gé­né­ra­tive auraient été bien plus dif­fi­ciles à atteindre à cette vitesse et à cette échelle.

Résumé

L’essentiel en quelques lignes :

  • CUDA est la pla­te­forme pro­prié­taire de NVIDIA qui permet d’exploiter la puissance de calcul des GPU NVIDIA pour des calculs non gra­phiques (GPGPU).
  • La hié­rar­chie CUDA décompose un calcul complexe en threads, blocs et grilles ; les Streaming Mul­ti­pro­ces­sors exécutent ces threads par groupes de 32, appelés warps.
  • Pour l’IA et les LLM, CUDA apporte la pa­ral­lé­li­sa­tion massive qui rend l’en­traî­ne­ment et l’inférence réa­li­sables.
  • Depuis l’ar­chi­tec­ture Volta, les Tensor Cores ac­cé­lè­rent encore les opé­ra­tions ma­tri­cielles, et des bi­blio­thèques spé­cia­li­sées per­met­tent de répartir les calculs sur plusieurs GPU.
  • L’éco­sys­tème de bi­blio­thèques comme cuBLAS, cuDNN, NCCL, TensorRT et cuFFT, ainsi que des outils comme le CUDA Toolkit, NVCC et Nsight, fait que la plupart des dé­ve­lop­peurs n’écrivent quasiment plus de code CUDA eux-mêmes.
  • Des fra­me­works comme PyTorch et Ten­sor­Flow s’appuient sur CUDA en arrière-plan : CUDA reste donc le socle technique des systèmes d’IA actuels.
IONOS CLOUD GPU VM
Maximisez les per­for­mances de l'IA avec votre VM GPU dans le Cloud
  • GPU NVIDIA H200 exclusifs pour une puissance de calcul maximale
  • Per­for­mances garanties grâce à des cœurs de pro­ces­seurs en­tiè­re­ment dédiés
  • Hé­ber­ge­ment en Europe pour une sécurité maximale des données et une con­for­mité au RGPD
  • Modèle tarifaire simple et pré­vi­sible avec un prix fixe par heure

Qu’est-ce que CUDA ?

À l’origine, CUDA était l’acronyme de « Compute Unified Device Ar­chi­tec­ture ». NVIDIA utilise désormais ce terme comme nom propre pour désigner sa pla­te­forme pro­prié­taire de calcul parallèle sur GPU. Celle-ci permet aux dé­ve­lop­peurs d’exploiter la puissance des GPU NVIDIA pour effectuer des calculs non gra­phiques : c’est ce qu’on appelle le General-Purpose GPU Computing (GPGPU).

Con­trai­re­ment à un CPU, conçu pour traiter un nombre re­la­ti­ve­ment limité de tâches complexes, un GPU dispose de milliers d’unités de calcul capables d’exécuter si­mul­ta­né­ment des opé­ra­tions si­mi­laires. Il convient donc par­ti­cu­liè­re­ment aux calculs mas­si­ve­ment pa­ral­lèles. CUDA fournit les in­ter­faces de pro­gram­ma­tion, les com­pi­la­teurs et les en­vi­ron­ne­ments d’exécution né­ces­saires pour exploiter ce pa­ral­lé­lisme.

Les dé­ve­lop­peurs peuvent utiliser CUDA avec des langages comme C++, Python ou Fortran. Les calculs sont exécutés sur le GPU par des fonctions appelées « kernels », tandis que le CPU pilote le programme. CUDA propose également des API et des fonctions d’exécution pour trans­fé­rer les données entre les mémoires du CPU et du GPU, ou sim­pli­fier la gestion de la mémoire grâce à des fonc­tion­na­li­tés comme Unified Memory.

Au fil du temps, CUDA est devenue un véritable éco­sys­tème logiciel. Des outils connus comme PyTorch, Ten­sor­Flow et NVIDIA RAPIDS s’appuient sur CUDA pour accélérer les calculs sur les GPU NVIDIA. Il est ainsi possible de profiter de cette ac­cé­lé­ra­tion sans pro­gram­mer soi-même chaque opération en CUDA.

Note

CUDA est étroi­te­ment liée au matériel NVIDIA : cette pla­te­forme pro­prié­taire est dé­ve­lop­pée et prise en charge ex­clu­si­ve­ment sur les GPU NVIDIA com­pa­tibles CUDA. Les ap­pli­ca­tions qui utilisent di­rec­te­ment CUDA ne peuvent donc pas fonc­tion­ner telles quelles sur les GPU d’autres fa­bri­cants, comme AMD ou Intel. Cette in­té­gra­tion étroite du matériel et du logiciel contribue aux per­for­mances de CUDA et à sa large adoption dans l’IA et le calcul haute per­for­mance (HPC).

Comment fonc­tionne la hié­rar­chie CUDA ?

Le principe de CUDA consiste à dé­com­po­ser un calcul complexe en une multitude de petites tâches. Plutôt que de traiter les opé­ra­tions les unes après les autres, la pla­te­forme les répartit entre des milliers d’unités d’exécution pa­ral­lèles, selon une or­ga­ni­sa­tion hié­rar­chique.

La plus petite unité est le thread (fil d’exécution). Les threads exécutent le même code de kernel, mais traitent des données dif­fé­rentes. Ils peuvent aussi suivre des chemins d’exécution distincts selon les con­di­tions du programme. Chaque thread peut, par exemple, traiter un élément d’une matrice.

Plusieurs threads forment un bloc. Au sein d’un même bloc, ils peuvent com­mu­ni­quer et partager une zone de mémoire rapide, appelée Shared Memory, pour tra­vail­ler plus ef­fi­ca­ce­ment ensemble.

Plusieurs blocs cons­ti­tuent une grille (grid). Chaque appel de kernel lance une grille complète, dont les blocs sont au­to­ma­ti­que­ment répartis par l’en­vi­ron­ne­ment d’exécution CUDA entre les unités de calcul dis­po­nibles sur le GPU.

Sur le plan matériel, les blocs sont exécutés par des Streaming Mul­ti­pro­ces­sors (SM). Chaque SM peut traiter plusieurs blocs si­mul­ta­né­ment pour exploiter les res­sources du GPU. Les threads sont également organisés en groupes de 32, appelés warps. Les threads d’un warp sont planifiés ensemble et exécutent les ins­truc­tions de manière syn­chro­ni­sée lorsqu’ils suivent le même chemin. Cette or­ga­ni­sa­tion contribue aux per­for­mances élevées des ap­pli­ca­tions CUDA.

Pourquoi CUDA est-elle im­por­tante pour l’IA et les LLM ?

Les avancées de l’in­tel­li­gence ar­ti­fi­cielle reposent largement sur le Deep Learning, qui nécessite d’immenses volumes de calculs ma­thé­ma­tiques. L’en­traî­ne­ment et l’inférence des grands modèles de langage (LLM) mo­bi­li­sent notamment des mul­ti­pli­ca­tions de matrices, des opé­ra­tions vec­to­rielles et des calculs sur les tenseurs. Les GPU et NVIDIA CUDA sont par­ti­cu­liè­re­ment adaptés à ces tâches mas­si­ve­ment pa­ral­lèles.

CUDA ne fournit pas seulement de la puissance de calcul : elle constitue aussi une couche lo­gi­cielle es­sen­tielle pour de nombreux fra­me­works d’IA. Les dé­ve­lop­peurs peuvent ainsi entraîner des modèles complexes sans avoir à pro­gram­mer chaque opération di­rec­te­ment sur le GPU.

Exécuter les calculs des réseaux neuronaux en parallèle

Les réseaux neuronaux peuvent compter des millions, voire des milliards de pa­ra­mètres. Leur en­traî­ne­ment nécessite un très grand nombre d’opé­ra­tions ma­thé­ma­tiques, dont beaucoup peuvent être exécutées si­mul­ta­né­ment. CUDA permet de répartir ces calculs entre des milliers de cœurs GPU, plutôt que de sol­li­ci­ter uni­que­ment quelques cœurs CPU. Les mul­ti­pli­ca­tions de matrices, les fonctions d’ac­ti­va­tion et le calcul des gradients s’en trouvent con­si­dé­ra­ble­ment accélérés. Selon la taille du modèle et l’in­fras­truc­ture, un en­traî­ne­ment qui prendrait plusieurs mois peut ainsi être ramené à quelques jours ou semaines.

Accélérer l’IA grâce aux Tensor Cores

Depuis l’ar­chi­tec­ture Volta, NVIDIA intègre à ses GPU des unités spé­cia­li­sées appelées Tensor Cores. Conçues pour les charges de travail liées à l’IA, elles ac­cé­lè­rent fortement les opé­ra­tions ma­tri­cielles par rapport aux cœurs CUDA clas­siques. Les bi­blio­thèques CUDA per­met­tent d’exploiter ces unités sans avoir à les pro­gram­mer di­rec­te­ment. Des fra­me­works comme PyTorch et Ten­sor­Flow utilisent ainsi les bi­blio­thèques NVIDIA CUDA en arrière-plan. Les Tensor Cores offrent des gains de per­for­mances par­ti­cu­liè­re­ment im­por­tants pour le Deep Learning, l’IA gé­né­ra­tive et les LLM.

Note

Avec CUDA Toolkit 13.0, la com­pi­la­tion hors ligne et la prise en charge des bi­blio­thèques pour Maxwell, Pascal et Volta ont été sup­pri­mées. Pour ces ar­chi­tec­tures, la série CUDA 12.x reste per­ti­nente.

Répartir les calculs sur plusieurs GPU

Les très grands LLM peuvent dépasser la capacité mémoire d’un seul GPU. Selon la taille du modèle, la précision numérique et la mémoire dis­po­nible, ils peuvent né­ces­si­ter une ré­par­ti­tion sur plusieurs GPU. NVIDIA CUDA fournit les bases lo­gi­cielles de cette montée en charge. Des bi­blio­thèques spé­cia­li­sées assurent des com­mu­ni­ca­tions rapides entre les GPU d’un même serveur, voire de plusieurs serveurs réunis en cluster. Les données, les modèles et les calculs peuvent ainsi être dis­tri­bués entre de nombreux ac­cé­lé­ra­teurs.

Exploiter CUDA dans les fra­me­works d’IA

La plupart des dé­ve­lop­peurs ne pro­gram­ment pas di­rec­te­ment en CUDA : ils utilisent des fra­me­works comme PyTorch ou Ten­sor­Flow, qui con­ver­tis­sent de nom­breuses opé­ra­tions en calculs CUDA. Ils bé­né­fi­cient ainsi de l’ac­cé­lé­ra­tion GPU sans avoir à maîtriser les détails du matériel. CUDA reste néanmoins le socle technique de ces trai­te­ments. Dans PyTorch, lorsqu’un tenseur est transféré sur un GPU NVIDIA, les calculs s’appuient sur des bi­blio­thèques et des kernels CUDA.

Quelles bi­blio­thèques et quels outils composent l’éco­sys­tème CUDA ?

CUDA ne se limite pas à une interface de pro­gram­ma­tion. NVIDIA a pro­gres­si­ve­ment développé un vaste éco­sys­tème de bi­blio­thèques et d’outils de dé­ve­lop­pe­ment et d’op­ti­mi­sa­tion. Cet en­vi­ron­ne­ment logiciel contribue largement à la place occupée par NVIDIA CUDA dans le domaine de l’IA. Plutôt que d’écrire leurs propres fonctions CUDA, de nombreux dé­ve­lop­peurs utilisent des bi­blio­thèques spé­cia­li­sées déjà op­ti­mi­sées pour les GPU NVIDIA récents. Ils ob­tien­nent ainsi de hautes per­for­mances sans devoir réaliser eux-mêmes toutes les op­ti­mi­sa­tions.

Les prin­ci­pales bi­blio­thèques CUDA

L’éco­sys­tème CUDA comprend des bi­blio­thèques spé­cia­li­sées qui proposent des opé­ra­tions courantes déjà op­ti­mi­sées pour les GPU com­pa­tibles CUDA. Elles sim­pli­fient le dé­ve­lop­pe­ment et amé­lio­rent les per­for­mances. Parmi les prin­ci­pales bi­blio­thèques :

  • cuBLAS : cette bi­blio­thèque, dont le nom signifie CUDA Basic Linear Algebra Su­brou­tines, est une im­plé­men­ta­tion de BLAS optimisée pour les GPU. Elle propose notamment des fonctions de mul­ti­pli­ca­tion de matrices et des opé­ra­tions vec­to­rielles.
  • cuDNN : la CUDA Deep Neural Network Library fournit des im­plé­men­ta­tions hautement op­ti­mi­sées d’opé­ra­tions utilisées dans les réseaux neuronaux. Elle est largement employée par PyTorch et Ten­sor­Flow.
  • NCCL : la NVIDIA Col­lec­tive Com­mu­ni­ca­tions Library assure les com­mu­ni­ca­tions entre plusieurs GPU. Elle accélère l’échange de pa­ra­mètres et de résultats in­ter­mé­diaires lors de l’en­traî­ne­ment distribué de grands modèles, notamment les LLM.
  • TensorRT : cette bi­blio­thèque optimise et accélère l’exécution de modèles d’IA déjà entraînés, lors de la phase d’inférence, sur les GPU NVIDIA.
  • cuFFT : cette bi­blio­thèque permet d’exécuter des trans­for­ma­tions de Fourier ac­cé­lé­rées par GPU. Elle est notamment utilisée en calcul scien­ti­fique, en trai­te­ment du signal et en si­mu­la­tion.

Les prin­ci­paux outils CUDA

L’éco­sys­tème CUDA comprend aussi des outils qui aident les dé­ve­lop­peurs à créer et à déboguer leurs ap­pli­ca­tions ac­cé­lé­rées par GPU, ainsi qu’à en analyser et optimiser les per­for­mances :

  • CUDA Toolkit : cet ensemble d’outils constitue la base du dé­ve­lop­pe­ment CUDA. Il comprend des com­pi­la­teurs, des bi­blio­thèques, des com­po­sants d’exécution et de la do­cu­men­ta­tion.
  • NVCC : le com­pi­la­teur CUDA officiel de NVIDIA trans­forme le code CUDA en code exé­cu­table sur GPU et distingue les parties du programme destinées au CPU et au GPU. Il sert notamment à compiler les ap­pli­ca­tions CUDA.
  • Nsight Systems : cet outil d’analyse permet d’étudier les per­for­mances d’ap­pli­ca­tions complexes. Il montre comment le CPU, le GPU et la mémoire in­te­ra­gis­sent pendant l’exécution afin de repérer les goulets d’étran­gle­ment et les pos­si­bi­li­tés d’op­ti­mi­sa­tion.
  • Nsight Compute : cet outil analyse en détail les kernels CUDA, notamment les accès mémoire, le taux d’oc­cu­pa­tion et l’ef­fi­ca­cité du GPU. Il aide à optimiser les ap­pli­ca­tions par­ti­cu­liè­re­ment exi­geantes.
  • CUDA-GDB : cette extension du débogueur GNU permet d’examiner le fonc­tion­ne­ment des ap­pli­ca­tions CUDA et de détecter les erreurs di­rec­te­ment dans le code GPU.
Note

Le CUDA Toolkit peut être installé sous Ubuntu 24.04 à partir des dépôts officiels de NVIDIA. Des paquets d’ins­tal­la­tion locaux et des ins­tal­la­teurs Runfile sont également dis­po­nibles pour certains besoins. Pour la plupart des uti­li­sa­teurs, NVIDIA re­com­mande de passer par le ges­tion­naire de paquets, qui facilite la gestion des com­po­sants CUDA et des mises à jour.

En résumé : pourquoi CUDA est-elle es­sen­tielle au calcul sur GPU ?

CUDA est passée d’une pla­te­forme de pro­gram­ma­tion GPU à l’un des prin­ci­paux piliers logiciels de l’in­for­ma­tique moderne. Son ar­chi­tec­ture exploite ef­fi­ca­ce­ment le pa­ral­lé­lisme des GPU NVIDIA com­pa­tibles CUDA et sert de base technique à de nom­breuses ap­pli­ca­tions d’IA, de Deep Learning et de calcul haute per­for­mance (HPC). Pour les grands modèles de langage et l’IA gé­né­ra­tive, CUDA joue aujourd’hui un rôle central dans l’ar­ti­cu­la­tion entre matériel et logiciel. Com­prendre ses principes est donc essentiel pour saisir comment les systèmes d’IA sont entraînés et exploités.

Aller au menu principal