ZLUDA, une implémentation qui permet d'exécuter des applications CUDA sur des GPU AMD

ZLUDA

ZLUDA fonctionne sur la pile ROCm d'AMD

La nouvelle a été publiée que AMD a pris la décision d'arrêter de financer le développement de ZLUDA, c'est laquelle une implémentation ouverte de la technologie CUDA pour les GPU AMD, vous permettant d'exécuter des applications CUDA sans les modifier avec des performances proches de celles des applications exécutées sans couches supplémentaires.

Au cours des deux dernières années, des travaux ont été réalisés sur le développement de cette couche pour faciliter l'exécution d'applications CUDA sur des systèmes équipés de GPU AMD. Mais jusqu'à récemment AMD a pris la décision que exécuter des applications CUDA sur des GPU AMD ne présentait pas d'intérêt commercial, ce qui a permis au promoteur d'ouvrir ses développements comme convenu dans le contrat.

À propos de ZLUDA

Le projet a été initialement créé pour prendre en charge le travail CUDA sur les GPU Intel et le changement dans la politique de support des GPU est dû au fait qu'au départ, le développeur de ZLUDA était un employé d'Intel. En 2021, Intel a décidé que ce n'était pas commercialement viable offrir la possibilité d'exécuter des applications CUDA sur des GPU Intel, ce qui a conduit à l'arrêt du développement de l'initiative.

En 2022 tôt, le développeur a quitté Intel et a signé un contrat avec AMD pour poursuivre le développement de la couche de compatibilité CUDA. Au cours du développement, AMD a demandé que l'intérêt de l'entreprise pour le projet ZLUDA ne soit pas promu et qu'elle ne s'engage pas dans le référentiel public ZLUDA.

ZLUDA fournit un support binaire pour les applications CUDA ceux existants compilés avec le compilateur CUDA pour les GPU NVIDIA, sans qu'il soit nécessaire d'apporter des modifications au niveau du code source. L'implémentation fonctionne sur la pile ROCm d'AMD et le runtime HIP.

Dans son état actuel, Le niveau de qualité de conversion de ZLUDA est considéré comme une version alpha. Bien qu'il convient de mentionner qu'il est déjà capable d'exécuter de nombreuses applications CUDA, en plus de fournir une prise en charge minimale des primitives et des bibliothèques, il dispose également d'implémentations prototypes du framework OptiX.

ZLUDA

Tableau de comparaison ZLUDA

Lors de la première exécution des applications CUDA sous contrôle ZLUDA, vous rencontrez des retards notables car ZLUDA compile le code pour le GPU. Cependant, lors des exécutions suivantes, ce délai disparaît, car le code compilé est mis en cache, ce qui entraîne des performances quasi natives lors de l'exécution du code compilé. Par exemple, lors de l'exécution de Geekbench sur un GPU AMD Radeon 6800 XT, la version basée sur ZLUDA de la suite de référence CUDA a montré des performances nettement meilleures que la version basée sur OpenCL.

En outre, il est mentionné que la prise en charge de l'API officielle du pilote CUDA et l'ingénierie inverse de l'API CUDA non documentée sont implémentées dans ZLUDA en remplaçant les appels de fonction par des fonctions analogues fournies dans le runtime HIP, qui est très similaire à CUDA.

Par exemple, la fonction cuDeviceGetAttribute() est remplacée par hipDeviceGetAttribute(). ZLUDA assure également la compatibilité avec les bibliothèques NVIDIA telles que NVML, cuBLAS et cuSPARSE. Pour ces bibliothèques, ZLUDA fournit des bibliothèques de traduction portant le même nom et le même ensemble de fonctionnalités, construites sur des bibliothèques AMD similaires. Le code de l'application GPU, compilé en représentation PTX (Parallel Thread Execution), est traduit par un compilateur spécial en une représentation LLVM IR intermédiaire, à partir de laquelle le code binaire du GPU AMD est généré.

Enfin, il convient de mentionner que L'avenir du projet dépend de l'intérêt de la communauté et d'éventuelles propositions de coopération d'autres entreprises. Sans soutien extérieur, le projet continuera à se développer uniquement dans des domaines d'intérêt personnel pour l'auteur, comme le DLSS.

Pour intéressé par le code du projet, il faut savoir qu'il est écrit en Rust et est distribué sous les licences MIT et Apache 2.0, et que le projet est compatible avec Linux et Windows. Si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.