Présentation

Le dépôt CUDA‑for‑AMD‑Windows propose une chaîne de compatibilité permettant d’exécuter des binaires Windows ciblant CUDA sur des GPU AMD. La solution s’appuie sur ZLUDA v6‑preview.69, le SDK HIP/ROCm d’AMD (version 6.4 pour le GPU de référence) et LibTorch 2.3.0+cu118. Elle ne prétend pas assurer la correction numérique de chaque programme, mais fournit un environnement où les appels CUDA sont redirigés vers les bibliothèques ROCm correspondantes.

Mécanisme de compatibilité

ZLUDA intercepte les appels de l’API CUDA (nvcuda, cuBLAS, cuBLASLt, cuSPARSE, cuFFT) et les traduit en appels HIP/rocBLAS, hipBLASLt, rocSPARSE et ROCm FFT. Le projet inclut un script PowerShell qui détecte le GPU présent, vérifie la version du pilote AMD et du SDK HIP, puis télécharge le build ZLUDA officiel ainsi que les bibliothèques LibTorch. Un fichier de configuration .runtime/runtime-config.json décrit le mapping GPU‑>HIP, tandis que .runtime/gpu-report.json consigne les capacités détectées.

powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1

Le même script exécute cuda_check.exe pour valider le chargement des surfaces runtime et, si un environnement Python avec PyTorch est présent, lance automatiquement des tests fonctionnels (ex. validation de cuBLAS, cuFFT).

État de validation et limites

Le GPU de référence validé est l’AMD Radeon RX 9060 XT (gfx1200). Sur cette carte, le pipeline complet a été testé : un réseau PPO de 2 216 347 paramètres a réalisé une passe avant, un apprentissage et une optimisation, puis a exécuté 65 536 pas de temps en une itération propre. Le même test a fonctionné sur une RX 9070 XT (gfx1201) grâce à un profil externe. En revanche, le Radeon 890M (gfx1150) ne passe que partiellement : le runtime HIP 7.2 fonctionne, mais des blocages de conv2d et des corruptions de SDPA ont été signalés. Le projet signale que la compatibilité est évaluée « par capacité », et que les GPU non validés restent des candidats non vérifiés.

Un correctif expérimental (v7) détecte les binaires cubin‑only incompatibles et renvoie l’erreur NO_BINARY_FOR_GPU au lieu de laisser passer des tenseurs numériquement erronés. Cette mesure limite les risques de résultats silencieusement incorrects.

Procédure d'installation

1. Installer le pilote AMD le plus récent et le SDK HIP correspondant à l’architecture du GPU (le script lit manifests/windows-gpu-profiles.json pour déterminer le plancher minimal).
2. Cloner le dépôt : git clone https://github.com/Speedstu/CUDA-for-AMD-Windows.git.
3. Lancer le script d’installation : le script détecte le GPU, vérifie les dépendances, télécharge ZLUDA et LibTorch, calcule les hachages SHA‑256, génère les fichiers de configuration et exécute les tests de fumée.
4. En cas d’échec du test cuda_check.exe, le script indique la cause (pilote manquant, version HIP insuffisante ou GPU non supporté).

Le projet reste open‑source, les contributions sont acceptées via pull‑request, et la documentation détaillée (docs/VALIDATION.md) décrit les critères de validation et les scripts de test fonctionnels.