6 points par GN⁺ 2024-02-13 | 2 commentaires | Partager sur WhatsApp

AMD a discrètement soutenu une implémentation de CUDA basée sur ROCm, désormais publiée en open source

  • AMD s’efforce depuis plusieurs années de permettre aux développeurs d’exécuter sur HIP/ROCm des bases de code visant l’API CUDA de NVIDIA.
  • Malgré ces efforts, ce n’était pas la meilleure solution pour rechercher des performances optimales, c’est-à-dire une solution simple, immédiate et garantissant les performances.
  • Au cours des deux dernières années, AMD a discrètement soutenu un projet visant à offrir, au niveau des bibliothèques, une compatibilité binaire permettant à de nombreuses applications NVIDIA CUDA de fonctionner sur la pile AMD ROCm sans modification du code source.

ZLUDA : prise en charge de CUDA pour les cartes graphiques Intel

  • Il y a quelques années, un projet appelé ZLUDA avait été lancé pour prendre en charge CUDA sur les cartes graphiques Intel, mais il a été interrompu pour des raisons personnelles.
  • Le développeur de ZLUDA, Andrzej Janik, a reçu d’AMD en 2022 un contrat pour adapter ZLUDA aux GPU AMD en utilisant HIP/ROCm.
  • Janik a implémenté ZLUDA sur les GPU Radeon au cours des deux dernières années, permettant à de nombreux logiciels CUDA de fonctionner sur HIP/ROCm sans modification.

Publication open source de ZLUDA

  • AMD a décidé cette année d’arrêter le financement de ce projet et de ne pas le lancer comme produit logiciel.
  • Toutefois, le contrat prévoyait qu’à son expiration, Janik pourrait publier son travail en open source.
  • Janik a fourni un accès afin de tester et benchmarker cette nouvelle implémentation de ZLUDA.

Limites de l’implémentation ZLUDA et code open source

  • L’implémentation de ZLUDA n’est pas sûre à 100 % : la prise en charge de NVIDIA OptiX n’est pas complète, et les logiciels n’utilisant pas de code assembleur PTX ne sont actuellement pas pris en charge, entre autres limites.
  • Dans la plupart des cas, cette implémentation est étonnamment capable pour le travail d’un seul développeur.
  • Le code open source est proposé sous double licence Apache 2.0 ou MIT.
  • Le langage de programmation Rust a été utilisé pour cette implémentation sur Radeon.

L’avis de GN⁺

  • Cet article présente un projet qu’AMD a discrètement soutenu pour offrir une compatibilité CUDA, et qui pourrait représenter une contribution majeure à la communauté open source.
  • ZLUDA constitue une avancée importante en permettant aux développeurs d’exécuter des applications CUDA sur la plateforme AMD sans modifier le code source.
  • Ces efforts offrent aux utilisateurs de GPU AMD un accès à un écosystème logiciel plus large, et l’usage d’un langage moderne comme Rust est particulièrement intéressant.

2 commentaires

 
bbulbum 2024-02-13

Nvidia, va te faire foutre !

 
GN⁺ 2024-02-13
Avis sur Hacker News
  • ZLUDA a été publié parce qu’AMD a cessé de le financer

    • Après deux ans de développement, AMD a décidé que faire tourner des applications CUDA sur des GPU AMD ne constituait pas un cas d’usage viable sur le plan commercial.
    • Selon les termes du contrat, ZLUDA pouvait être publié si AMD jugeait qu’un développement supplémentaire n’était pas approprié.
  • Mention de la CUDA Dark API

    • La CUDA Dark API est composée de fonctions non documentées, et leur nombre exact est inconnu.
    • Les applications classiques utilisent généralement une ou deux des fonctions les plus courantes.
    • Le nom de ces fonctions et le type de leurs arguments ne sont pas connus, ce qui rend leur implémentation très chronophage.
    • ZLUDA a procédé par rétro-ingénierie et implémentation au cas par cas après avoir observé que des applications les utilisaient.
  • Avis soutenant AMD dans sa volonté de briser le monopole de CUDA

    • Une couche de traduction présente l’avantage de rendre immédiatement le matériel plus exploitable et de favoriser son adoption.
    • Mais il existe un risque que les développeurs ne prennent pas en charge ROCm et n’utilisent que la couche de traduction.
    • Proton+DXVK a eu un effet positif sur le gaming Linux, mais pour tirer des performances en calcul GPU, un réglage adapté à une architecture précise reste nécessaire.
    • AMD doit faire quelque chose pour rester compétitif sur le marché.
  • Retour d’expérience sur une tentative d’exécuter Stable Diffusion sur un GPU AMD et sur les difficultés rencontrées

    • L’installation de ROCm et la détection du GPU ne posaient pas de problème, mais comme l’écosystème ML est centré sur Nvidia, l’installation de PyTorch et d’autres outils s’est révélée difficile.
    • Le modèle a fini par se charger, mais le logiciel n’a pas réussi à générer une seule image avant de faire planter la session graphique.
    • Cette expérience a ravivé l’envie d’acheter à nouveau un GPU Nvidia.
  • Plusieurs années après que Blender a abandonné OpenCL et adopté un backend CUDA, un backend Radeon HIP a été ajouté, mais il s’est avéré que l’utilisation de ZLUDA + le backend CUDA était légèrement plus rapide que le backend Radeon HIP.

  • La décision d’AMD d’arrêter de financer ce projet semble incompréhensible.

    • CUDA-on-ROCm pourrait briser le monopole de NVIDIA et limiter la tentation pour NVIDIA d’apporter des changements à CUDA.
    • Quand on n’est pas numéro un sur le marché, il faut suivre le standard de fait pour proposer une véritable concurrence par la valeur, tout en créant et en adoptant des standards réellement ouverts.
  • Question liée à l’information selon laquelle Nvidia aurait contourné les vérifications du pilote sous licence GPL du noyau

    • Il avait été rapporté qu’à partir du kernel 6.6, le pilote serait bloqué si Nvidia ne corrigeait pas cela, mais aucune réaction de Nvidia n’a été vue.
    • L’auteur utilise actuellement le kernel 6.7.4 et a vu des informations contradictoires sur le fait que Nvidia ait corrigé le problème ou que le blocage ait été reporté.
  • Un guide destiné à ceux qui souhaitent compiler eux-mêmes la stack ROCm/HIP d’AMD est présenté dans un article de Phoronix.

  • ROCm est mieux expliqué sur GitHub que dans la documentation officielle, ce qui souligne l’importance du branding comme l’une des raisons pour lesquelles AMD perd en compétitivité sur le marché.

  • Certains estiment qu’AMD devrait affecter davantage d’équipes à ce projet.