ROCm (Radeon Open Compute)
ROCm (Radeon Open Compute) est la plateforme logicielle open source d’AMD pour le calcul accéléré sur GPU, conçue comme l’alternative à CUDA de NVIDIA pour les workloads d’intelligence artificielle et de calcul haute performance (HPC).
ROCm fournit les drivers, compilateurs, bibliothèques et outils nécessaires pour exécuter des applications de machine learning et de deep learning sur les GPU AMD, qu’il s’agisse des accélérateurs de data center Instinct (MI300X, MI325X, MI355X) ou des cartes grand public Radeon (RX 7900, RX 9060). Le cœur de ROCm est HIP (Heterogeneous-computing Interface for Portability), une API C++ quasi-identique à CUDA qui permet de porter du code CUDA vers AMD avec des modifications minimales. ROCm est intégré dans PyTorch, TensorFlow, et les principaux frameworks ML, mais avec un niveau de maturité et de support inférieur à celui de CUDA.
- Signification
- Radeon Open Compute
- Éditeur
- AMD
- Version production
- ROCm 7.2.0
- Version preview
- ROCm 7.11.0 (tech preview via TheRock) Preview
- Licence
- Open Source (MIT, Apache 2.0 selon composants)
- API principale
- HIP (compatible CUDA)
- OS
- Linux + Windows (unifié depuis ROCm 7.2)
- GPU data center
- AMD Instinct MI300X, MI325X, MI350X, MI355X
- GPU grand public
- Radeon RX 7000/9000 (RDNA3/RDNA4), Ryzen AI Max
- Frameworks ML
- PyTorch, TensorFlow, JAX, ONNX Runtime
- GitHub
- ROCm/ROCm
HIP : le pont entre CUDA et AMD
Comment HIP fonctionne
HIP est une API C++ qui ressemble à CUDA de manière délibérée. L’idée est simple : si vous avez du code CUDA, vous pouvez le convertir en code HIP avec l’outil hipify, qui remplace les appels cuda* par des appels hip* (par exemple cudaMalloc devient hipMalloc, cudaMemcpy devient hipMemcpy). Le code HIP peut ensuite être compilé soit pour GPU AMD (via le compilateur ROCm), soit pour GPU NVIDIA (via le backend CUDA). C’est ce qui fait de HIP un outil de portabilité, pas juste une API AMD.
// Code HIP : quasi-identique à CUDA
#include <hip/hip_runtime.h>
__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];
}
}
int main() {
float *d_a, *d_b, *d_c;
hipMalloc(&d_a, N * sizeof(float));
hipMalloc(&d_b, N * sizeof(float));
hipMalloc(&d_c, N * sizeof(float));
hipLaunchKernelGGL(vectorAdd, dim3(blocks), dim3(256),
0, 0, d_a, d_b, d_c, N);
hipDeviceSynchronize();
hipFree(d_a); hipFree(d_b); hipFree(d_c);
return 0;
}ROCm 7.1 a amélioré significativement la compatibilité HIP/CUDA avec l’ajout de nombreuses API manquantes : gestion mémoire 2D/3D, gestion de modules, attributs de streams, et le support des partitions de tuiles imbriquées dans les groupes coopératifs. L’objectif d’AMD est de rendre HIP suffisamment compatible pour que la conversion soit quasi-automatique.
hipify : convertir du code CUDA
L’outil hipify-perl (conversion textuelle rapide) et hipify-clang (conversion basée sur l’AST, plus précise) permettent de convertir du code CUDA existant en HIP. En pratique, les projets simples se convertissent bien. Les projets complexes qui utilisent des bibliothèques CUDA spécifiques (cuDNN, TensorRT, NCCL) nécessitent plus de travail, car les équivalents ROCm (MIOpen, TensorRT n’existe pas sur AMD, RCCL) n’ont pas exactement les mêmes API.
Bibliothèques ROCm
ROCm propose des équivalents aux principales bibliothèques CUDA :
| Fonction | CUDA | ROCm | Parité |
|---|---|---|---|
| Algèbre linéaire (BLAS) | cuBLAS | rocBLAS + hipBLASLt | Bonne |
| Primitives deep learning | cuDNN | MIOpen | Correcte (moins d’opérations) |
| Communication multi-GPU | NCCL | RCCL | Bonne |
| FFT | cuFFT | rocFFT | Bonne |
| Sparse | cuSPARSE | rocSPARSE | Bonne |
| Solver | cuSOLVER | rocSOLVER | Correcte |
| Random | cuRAND | rocRAND | Bonne |
| Algorithmes parallèles | CUB / Thrust | hipCUB / rocThrust | Bonne |
| Profilage | Nsight | ROCprofiler-SDK (rocprofv3) | En progression |
| Optimisation inférence | TensorRT | Pas d’équivalent direct | Absent |
L’évolution rapide de ROCm
AMD reconnaît que ROCm a longtemps souffert de problèmes de stabilité, de documentation lacunaire, et d’un support matériel limité. L’entreprise a investi massivement pour corriger le tir. Lors du CES 2026, un représentant AMD a déclaré que « ROCm de 2023 est méconnaissable comparé à ROCm aujourd’hui ».
ROCm 7.2 : le tournant Windows
ROCm 7.2 est la version qui a marqué un changement de stratégie. Pour la première fois, il s’agit d’une release unifiée Linux et Windows, ce qui met fin à la séparation historique où ROCm était principalement une plateforme Linux. Sur Windows, ROCm s’installe désormais via le driver AMD Adrenalin (version 26.1.1+) et s’intègre avec PyTorch, ONNX Runtime, et DirectML.
Les gains de performance sont aussi notables. AMD revendique un gain de 5× sur ComfyUI entre ROCm 6.4 et ROCm 7.1, avec des accélérations spécifiques de 2,6× pour SDXL et 5,2× pour Flux S sur les systèmes Ryzen AI Max. ROCm 7.2 ajoute le support des GPU RDNA4 (Radeon RX 9060 XT) et des processeurs Ryzen AI 400.
TheRock : l’avenir open source
AMD développe TheRock, une nouvelle plateforme de build open source pour ROCm, disponible sur GitHub. TheRock utilise un build CMake unifié avec des dépendances bundlées, un support Windows natif, et une conformité ManyLinux_2_28 qui permet de produire des builds portables entre distributions Linux. Le stream de preview technologique (versions 7.9+) utilise TheRock, tandis que le stream production (7.0 à 7.8) utilise le système de build classique. La transition complète vers TheRock est prévue pour mi-2026.
GPU supportés
| Catégorie | GPU | Architecture | Support ROCm |
|---|---|---|---|
| Data center | Instinct MI300X | CDNA 3 | Complet (production) |
| Data center | Instinct MI325X | CDNA 3 | Complet (production) |
| Data center | Instinct MI350X / MI355X | CDNA 4 | Complet (production) |
| Grand public | Radeon RX 7900 XTX/XT | RDNA 3 | Supporté (workstation/IA locale) |
| Grand public | Radeon RX 7700 XT | RDNA 3 | Ajouté ROCm 7.2 |
| Grand public | Radeon RX 9060 XT LP | RDNA 4 | Ajouté ROCm 7.2 |
| APU | Ryzen AI Max+ / Max 300 | RDNA 3.5 / Zen 5 | Supporté |
| APU | Ryzen AI 400 | Zen 5 | Ajouté ROCm 7.2.2 |
ROCm pour l’IA en pratique
PyTorch sur ROCm
PyTorch supporte ROCm officiellement. L’installation se fait via pip avec un build spécifique ROCm :
# Installer PyTorch avec support ROCm 7.x
pip install torch torchvision torchaudio
--index-url https://download.pytorch.org/whl/rocm7.2
# Vérifier le support
python -c "import torch; print(torch.cuda.is_available())"
# True (HIP utilise l'API CUDA de PyTorch)Un point important : PyTorch utilise l’API torch.cuda même pour les GPU AMD via HIP. Vous écrivez model.to('cuda'), et HIP redirige transparemment vers le GPU AMD. Cela signifie que la plupart du code PyTorch fonctionne sans modification sur ROCm, à condition que les opérations utilisées soient implémentées dans MIOpen et rocBLAS.
Inférence locale de LLM
Pour l’inférence locale de LLM sur GPU AMD, plusieurs options existent. llama.cpp supporte AMD via le backend HIP/ROCm (compilation avec -DGGML_HIP=ON), avec un support de tous les formats de quantification incluant les K-quants et I-quants. C’est l’option la plus performante. Le backend Vulkan de llama.cpp est une alternative plus simple à installer mais limitée aux quants Q4_0/Q4_1/F16.
Ollama détecte automatiquement les GPU AMD compatibles ROCm et utilise le backend HIP. vLLM supporte ROCm comme « second-class citizen » (support fonctionnel mais moins optimisé que CUDA). ONNX Runtime supporte ROCm pour l’inférence.
Génération d’images
ROCm a fait des progrès significatifs pour la génération d’images. ComfyUI, l’interface open source la plus populaire pour les workflows de diffusion, est maintenant intégrée avec ROCm. AMD démontre l’exécution de modèles comme SDXL (6,6B paramètres), FLUX 2 (32B paramètres), et même des modèles text-to-video comme LTX Video et WAN 2.2 sur les systèmes Ryzen AI Max+ avec 64 Go de RAM.
ROCm vs CUDA : comparatif honnête
Performance réelle
En termes de performance brute, les GPU AMD Instinct sont compétitifs avec les NVIDIA équivalents. Le MI300X avec ses 192 Go de HBM2e offre plus de mémoire que le H100 (80 Go), ce qui est un avantage pour les modèles très gourmands en mémoire. Pour l’entraînement, les benchmarks MLPerf montrent des résultats comparables entre MI300X et H100 sur les workloads standard.
Cependant, la performance logicielle de ROCm est souvent en retrait de 10 à 30% par rapport à CUDA pour les mêmes opérations sur des GPU de puissance théorique équivalente. Cet écart vient principalement de l’optimisation des bibliothèques : cuDNN et cuBLAS bénéficient de décennies d’optimisation kernel par kernel, tandis que MIOpen et rocBLAS progressent rapidement mais n’ont pas encore atteint le même niveau de maturité. Pour certains workloads spécifiques (modèles MoE, certaines tailles de batch), l’écart peut être plus important ou au contraire quasiment nul.
Un avantage concret de ROCm est le rapport prix/VRAM. Sur le marché grand public, une Radeon RX 7900 XTX (24 Go VRAM) coûte significativement moins cher qu’une RTX 4090 (24 Go) tout en offrant des performances IA correctes. En data center, les MI300X avec 192 Go de HBM sont souvent proposés à des tarifs plus compétitifs que les H100 80 Go, ce qui compense partiellement l’écart de performance logicielle.
AMD Instinct en data center
C’est dans les data centers que ROCm est le plus mature. Les GPU Instinct MI300X et MI355X sont déployés chez les plus grands hyperscalers et opérateurs IA. Meta a signé un accord massif pour déployer jusqu’à 6 GW de GPU AMD dans ses data centers IA, avec les premières livraisons de MI450 dans les serveurs rack-scale Helios prévues courant 2026. OpenAI, Oracle, et le département américain de l’Énergie sont aussi des clients Instinct.
Le MI355X (architecture CDNA 4), dernière génération Instinct, apporte des Tensor Cores améliorés avec le support TF32, FP8 optimisé, et une efficacité énergétique accrue. hipBLASLt (l’équivalent de cuBLASLt) a reçu des optimisations spécifiques pour le MI355X dans ROCm 7.1+, incluant des kernels TF32 pour l’entraînement et l’inférence.
Tableau comparatif
| Critère | ROCm | CUDA |
|---|---|---|
| Licence | Open source | Propriétaire (gratuit) |
| Maturité | Bonne (en progression rapide) | Excellente (20+ ans) |
| Bibliothèques ML | MIOpen, rocBLAS, RCCL | cuDNN, cuBLAS, NCCL, TensorRT |
| Frameworks supportés | PyTorch, TensorFlow, JAX | Tous (natif) |
| Support Windows | Depuis ROCm 7.2 (récent) | Historique |
| Documentation | En amélioration | Exhaustive |
| Portabilité API | HIP (compatible CUDA) | CUDA uniquement |
| Communauté développeurs | Croissante | 4+ millions |
| GPU grand public pour IA | Radeon RX (support limité) | GeForce RTX (support complet) |
| Prix GPU (rapport VRAM/$) | Souvent meilleur (ex: RX 7900 XTX) | Plus cher par Go de VRAM |
Verdict : ROCm a fait des progrès spectaculaires entre 2023 et 2026. L’unification Windows/Linux, l’amélioration de la compatibilité HIP, et le support élargi des GPU grand public rendent ROCm viable pour de plus en plus d’utilisateurs. Cependant, CUDA reste le choix par défaut pour la productivité et la fiabilité. ROCm est un bon choix si vous avez un GPU AMD et que vous êtes prêt à investir du temps pour résoudre les problèmes de compatibilité occasionnels, si vous ciblez les GPU Instinct en data center (où le support est le plus complet), ou si vous valorisez l’open source.
Installation
Bonnes pratiques et pièges courants
L’installation de ROCm est l’un des points faibles historiques du projet. Voici les conseils essentiels pour éviter les problèmes les plus fréquents :
Vérifiez la compatibilité de votre GPU avant tout. Tous les GPU AMD ne sont pas supportés par ROCm. Consultez la page « Supported GPUs » de la documentation ROCm officielle. Les Radeon anciennes (RX 6000 et antérieures) ne sont généralement pas supportées ou le sont partiellement. Utilisez un OS supporté : Ubuntu 22.04 et 24.04 sont les mieux testés sous Linux. RHEL 9/10, SLES 15, et Oracle Linux sont aussi supportés. Évitez les distributions exotiques pour votre premier essai.
Ne mélangez pas les versions de ROCm. L’installation de composants de versions différentes (par exemple un driver 7.1 avec des bibliothèques 7.2) provoque des erreurs difficiles à diagnostiquer. Faites une installation propre. Testez avec rocminfo après installation pour vérifier que votre GPU est bien détecté. Si rocminfo ne liste pas votre GPU, le reste ne fonctionnera pas.
Pour PyTorch : utilisez toujours les builds officiels depuis pytorch.org avec l’index-url ROCm correspondant à votre version. Ne tentez pas de compiler PyTorch depuis les sources pour ROCm sauf si vous avez une raison spécifique, c’est un processus long et fragile.
Pour llama.cpp : si le backend HIP ne compile pas, vérifiez que les variables d’environnement ROCM_PATH et HIP_PATH pointent vers votre installation ROCm. Le problème le plus courant est un mauvais chemin vers le compilateur HIP. En cas de doute, le backend Vulkan est une alternative plus simple qui ne nécessite pas ROCm.
Sur Linux
# Ubuntu 22.04 / 24.04 (méthode recommandée)
# 1. Ajouter le dépôt AMD
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - |
sudo gpg --dearmor -o /etc/apt/keyrings/rocm.gpg
echo "deb [signed-by=/etc/apt/keyrings/rocm.gpg]
https://repo.radeon.com/rocm/apt/7.2 jammy main" |
sudo tee /etc/apt/sources.list.d/rocm.list
# 2. Installer
sudo apt update
sudo apt install rocm
# 3. Vérifier
rocminfo # Liste les GPU détectés
hipcc --version # Version du compilateur HIPSur Windows
Sur Windows, ROCm s’installe via le driver AMD Adrenalin 26.1.1 ou supérieur. Le driver intègre les composants ROCm nécessaires pour PyTorch et les applications IA. L’installation de PyTorch avec support ROCm se fait ensuite via pip comme indiqué plus haut.
Questions fréquentes sur ROCm
Ma Radeon RX 7900 XTX est-elle supportée par ROCm ?
Oui. La RX 7900 XTX (RDNA 3) est supportée par ROCm pour les workloads IA et de calcul. Cependant, le support n’est pas au même niveau que celui des GPU Instinct (MI300X, MI355X). Certaines opérations ou certains modèles peuvent ne pas fonctionner correctement. Pour l’inférence de LLM, llama.cpp avec le backend HIP fonctionne bien sur la RX 7900 XTX. Pour la génération d’images, ComfyUI avec ROCm est fonctionnel.
ROCm peut-il remplacer CUDA ?
En théorie, oui : HIP est conçu comme un remplacement compatible. En pratique, le remplacement est partiel. PyTorch fonctionne bien sur ROCm pour l’entraînement et l’inférence standard. Mais les outils spécialisés (TensorRT, Nsight, certaines bibliothèques CUDA-X) n’ont pas d’équivalent ROCm, et la communauté de développeurs est bien plus petite. Si votre workflow dépend uniquement de PyTorch et de bibliothèques standard, ROCm peut remplacer CUDA. Si vous utilisez l’écosystème NVIDIA étendu, la migration sera plus complexe.
ROCm fonctionne-t-il sur Windows ?
Oui, depuis ROCm 7.2. C’est une avancée majeure. Historiquement, ROCm était quasi-exclusivement Linux. Le support Windows passe par le driver Adrenalin et permet d’utiliser PyTorch, ONNX Runtime, et DirectML sur GPU AMD sous Windows. Le support est encore plus récent et moins mature que sous Linux, mais AMD investit activement pour atteindre la parité.
Faut-il installer ROCm pour utiliser llama.cpp sur AMD ?
Ça dépend du backend. Pour le backend HIP (recommandé, meilleures performances, tous les formats de quantification), oui, ROCm doit être installé. Pour le backend Vulkan (plus simple, mais limité aux quants Q4_0/Q4_1/F16), non, Vulkan suffit et est déjà inclus dans les drivers AMD standard. Si vous débutez, essayez d’abord Vulkan. Si vous voulez les meilleures performances, installez ROCm et compilez llama.cpp avec -DGGML_HIP=ON.
Quel est l’avenir de ROCm ?
AMD accélère fortement le développement de ROCm. Le projet TheRock vise à rendre ROCm plus facile à builder et à distribuer. Le support Windows s’améliore à chaque release. Les GPU MI400/MI450 (attendus courant 2026) seront accompagnés d’un ROCm encore plus optimisé. AMD signe des contrats massifs avec Meta, OpenAI et le département de l’Énergie américain, ce qui garantit que ROCm continuera de recevoir des investissements significatifs. L’écart avec CUDA se réduit, mais la parité complète reste un objectif à moyen terme.