Andrzej Janik przedstawił wydanie ZLUDA 5, otwartej implementacji technologii CUDA. Celem projektu jest umożliwienie uruchamiania niemodyfikowanych aplikacji CUDA na systemach z GPU innymi niż GPU NVIDIA, przy wydajności zbliżonej do aplikacji działających bez dodatkowych warstw. Kod projektu napisany jest w języku Rust i publikowany na licencjach MIT oraz Apache 2.0.
ZLUDA 5 stał się drugą istotną wersją projektu, powstałą po oczyszczeniu bazy kodu z kodu stworzonego podczas pracy Andrzeja w firmie AMD. Od 2022 roku Andrzej pracował w AMD nad stworzeniem warstwy kompatybilności GPU AMD z CUDA, ale w 2024 roku projekt został zamknięty. Zgodnie z warunkami umowy i po uzyskaniu zezwolenia na publikację od przedstawiciela AMD, Andrzej udostępnił kod prac, które powstały podczas pracy w AMD i które umożliwiają uruchamianie aplikacji CUDA na stosie ROCm oraz czasie wykonywania HIP (Heterogeneous-computing Interface for Portability).
W zeszłym roku Andrzej był zmuszony usunąć kod z otwartego dostępu po piśmie od prawników, które jasno wskazywało, że zezwolenie udzielone w trakcie korespondencji mailowej nie ma mocy prawnej. Następnie Andrzej rozpoczął prace nad nową wersją ZLUDA, opartą na bazie kodu, która istniała przed jego zatrudnieniem w AMD. W obecnej postaci rozwój koncentruje się na uruchamianiu aplikacji, które wykorzystują CUDA do przyspieszania zadań związanych z uczeniem maszynowym. Projekt na razie ogranicza się do działania na GPU AMD, ale w przyszłości zostanie dostosowany do GPU Intel.
Kluczowe ulepszenia w nowym wydaniu:
- Dodano wstępną obsługę uruchamiania na ZLUDA frameworków llm.c, Llama.cpp i PyTorch do realizacji dużych modeli językowych z zastosowaniem optymalizacji CUDA dla GPU NVIDIA.
- Wdrożono wstępną obsługę uruchamiania aplikacji, które wykorzystują biblioteki cuBLAS, cuBLASLt i nvml do zwiększenia wydajności.
- Dodano warstwę zluda_trace do śledzenia aplikacji wykorzystujących CUDA. Dzięki zluda_trace można diagnozować problemy i identyfikować niedociągnięcia w ZLUDA, które przeszkadzają w prawidłowym działaniu aplikacji.
- Zoc (kompilator offline ZLUDA) jest narzędziem wiersza poleceń, które umożliwia kompilowanie plików z instrukcjami NVIDIA PTX do pośredniego formatu AMD RDNA (wcześniej ta funkcjonalność była dostępna w postaci funkcji bibliotecznych).
- W bootloaderze modułów PTX zaimplementowano mechanizm buforowania rdzeni wykonywanych na GPU. Buforowanie pozwala uniknąć ponownego wykonywania zasobożernych operacji kompilacji instrukcji PTX (Parallel Thread Execution) do kodu maszynowego dla danego GPU.
Źródło: opennet.ru
