L'outil ZLUDA a été publié, permettant d'exécuter des applications CUDA sur des GPU AMD

Le projet ZLUDA a développé une implémentation ouverte de la technologie CUDA pour les GPU AMD, permettant d'exécuter des applications CUDA non modifiées avec des performances proches de celles des applications exécutées sans intermédiaires. L'outil publié garantit la compatibilité binaire avec les applications CUDA existantes compilées à l'aide du compilateur CUDA pour les GPU NVIDIA. L'implémentation fonctionne au-dessus de la pile ROCm développée par AMD et du runtime HIP (Heterogeneous-computing Interface for Portability). Le code du projet est écrit en Rust et est distribué sous les licences MIT et Apache 2.0. Il prend en charge le fonctionnement sous Linux et Windows.

La couche permettant d'organiser le fonctionnement de CUDA sur les systèmes avec GPU AMD a été développée ces deux dernières années, mais le projet a une histoire plus ancienne et a initialement été conçu pour assurer le fonctionnement de CUDA sur les GPU Intel. Le changement de politique de support des GPU s'explique par le fait qu'au départ, le développeur de ZLUDA était un employé d'Intel, mais en 2021, cette entreprise a jugé que la possibilité de faire fonctionner des applications CUDA sur les GPU Intel n'était pas d'un intérêt commercial et n'a pas voulu accélérer le développement de l'initiative.

Début 2022, le développeur a quitté Intel et a signé un contrat avec AMD pour développer une couche de compatibilité avec CUDA. AMD a demandé, lors du développement, de ne pas faire connaître l'intérêt d'AMD pour le projet ZLUDA et de ne pas faire de commits dans le dépôt public de ZLUDA. Deux ans plus tard, AMD a décidé que le lancement des applications CUDA sur les GPU AMD n'était pas d'un intérêt commercial, ce qui a permis au développeur, selon les termes du contrat, de rendre ses travaux accessibles. Étant donné que les fabricants de GPU ont cessé de financer le projet, son avenir dépend désormais de l'intérêt de la communauté et des propositions de collaboration d'autres entreprises. Sans soutien externe, le projet ne pourra peut-être se développer que dans des directions qui intéressent personnellement l'auteur, telles que DLSS (Deep Learning Super Sampling).

Dans son état actuel, la qualité de l'implémentation est évaluée comme étant en version alpha. Néanmoins, ZLUDA peut déjà être utilisé pour exécuter de nombreuses applications CUDA, y compris Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM et Arnold. Un support minimal pour les primitives et bibliothèques cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL et NVML est garanti.

Le premier lancement des applications CUDA sous ZLUDA entraîne des délais notables, car ZLUDA compile le code GPU. Les lancements suivants ne présentent pas ce retard, car le code compilé est enregistré dans le cache. Lors de l'exécution du code compilé, les performances sont proches de celles d'origine. Lors de l'exécution du benchmark Geekbench sur le GPU AMD Radeon 6800 XT, le jeu de tests CUDA effectué via ZLUDA a montré des performances nettement supérieures à celles de la version basée sur OpenCL.

L'outil ZLUDA a été publié, permettant d'exécuter des applications CUDA sur des GPU AMD

Le support de l'API officielle du pilote CUDA et d'une partie non documentée de l'API CUDA, étudiée par ingénierie inverse, est implémenté dans ZLUDA via le remplacement des appels de fonctions par des fonctions similaires fournies dans le runtime HIP, qui ressemble beaucoup à CUDA. Par exemple, la fonction cuDeviceGetAttribute() est remplacée par hipDeviceGetAttribute(). De manière similaire, la compatibilité avec les bibliothèques NVIDIA, telles que NVML, cuBLAS et cuSPARSE, est assurée dans ZLUDA grâce à des bibliothèques de traduction portant le même nom et le même ensemble de fonctions, construites comme des surcouches aux bibliothèques similaires d'AMD.

Le code GPU des applications, compilé en représentation PTX (Parallel Thread Execution), est d'abord traduit par un compilateur spécialisé en une représentation intermédiaire LLVM IR, à partir de laquelle le code binaire pour le GPU AMD est généré.

L'outil ZLUDA a été publié, permettant d'exécuter des applications CUDA sur des GPU AMD


Source : opennet.ru
Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster