S'ha publicat el conjunt d'eines ZLUDA, que us permet executar aplicacions CUDA a les GPU AMD

El projecte ZLUDA ha preparat una implementació oberta de la tecnologia CUDA per a GPU AMD, que permet executar aplicacions CUDA sense modificar amb un rendiment proper al rendiment de les aplicacions que s'executen sense capes. El conjunt d'eines publicat proporciona compatibilitat binària amb les aplicacions CUDA existents compilades amb el compilador CUDA per a les GPU NVIDIA. La implementació funciona a la part superior de la pila ROCm i el temps d'execució HIP (Heterogeneous-computing Interface for Portability) desenvolupat per AMD. El codi del projecte està escrit en Rust i es distribueix sota les llicències MIT i Apache 2.0. Admet el treball a Linux i Windows.

La capa per organitzar el treball CUDA en sistemes amb GPU AMD s'ha desenvolupat durant els últims dos anys, però el projecte té una història més llarga i es va crear originalment per garantir el treball de CUDA a les GPU Intel. El canvi en la política de suport de la GPU s'explica pel fet que al principi el desenvolupador de ZLUDA era un empleat d'Intel, però l'any 2021 aquesta empresa va considerar que la possibilitat d'executar aplicacions CUDA a les GPU Intel no tenia cap interès comercial i no va accelerar. desenvolupament de la iniciativa.

A principis de 2022, el desenvolupador va deixar Intel i va ser contractat per AMD per desenvolupar una capa per a la compatibilitat CUDA. Durant el desenvolupament, AMD va demanar no anunciar l'interès d'AMD pel projecte ZLUDA i no comprometre's amb el dipòsit públic de ZLUDA. Dos anys més tard, AMD va decidir que executar aplicacions CUDA a les GPU AMD no interessava a les empreses, cosa que, segons els termes del contracte, va permetre al desenvolupador descobrir el seu treball. Com que els fabricants de GPU han deixat de finançar el projecte, el seu destí ara depèn de l'interès de la comunitat i de la recepció de propostes de cooperació d'altres empreses. Sense suport extern, el projecte només es podrà desenvolupar en direccions que siguin d'interès personal per a l'autor, com ara DLSS (Deep Learning Super Sampling).

En la seva forma actual, el nivell de qualitat de la implementació s'avalua com una versió alfa. Tanmateix, ZLUDA ja es pot utilitzar per executar moltes aplicacions CUDA, com ara Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM i Arnold. Proporciona un suport mínim per a les biblioteques primitives cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL i NVML.

El primer llançament d'aplicacions CUDA que executen ZLUDA es produeix amb retards notables a causa del fet que ZLUDA compila codi GPU. No hi ha aquest retard en les execucions posteriors, ja que el codi compilat s'emmagatzema a la memòria cau. Quan s'executa codi compilat, el rendiment és proper al natiu. Quan s'executa Geekbench en una GPU AMD Radeon 6800 XT, la versió ZLUDA de la suite de referència CUDA va funcionar notablement millor que la versió OpenCL.

S'ha publicat el conjunt d'eines ZLUDA, que us permet executar aplicacions CUDA a les GPU AMD

El suport per a l'API oficial del controlador CUDA i la part d'enginyeria inversa de l'API CUDA no documentada s'implementa a ZLUDA substituint les trucades de funció per funcions similars proporcionades al temps d'execució HIP, que és similar en molts aspectes a CUDA. Per exemple, la funció cuDeviceGetAttribute() es substitueix per hipDeviceGetAttribute(). La compatibilitat amb biblioteques de NVIDIA com NVML, cuBLAS i cuSPARSE es garanteix de manera similar: per a aquestes biblioteques, ZLUDA proporciona biblioteques de traducció amb el mateix nom i el mateix conjunt de funcions, construïdes com a complements sobre biblioteques AMD similars.

El codi d'aplicació de la GPU compilat a la representació PTX (Parallel Thread Execution) es tradueix primer per un compilador especial a la representació intermèdia LLVM IR, sobre la base de la qual es genera el codi binari per a les GPU AMD.

S'ha publicat el conjunt d'eines ZLUDA, que us permet executar aplicacions CUDA a les GPU AMD


Font: opennet.ru

Afegeix comentari