Анджей Яник (Andrzej Janik) представи версия ZLUDA 5, отворена реализация на технологията CUDA. Целта на проекта е да предостави възможност за стартиране на немодифицирани CUDA приложения на системи с GPU, различни от GPU NVIDIA, с производителност, близка до производителността на приложенията, изпълнявани без прослойки. Кодът на проекта е написан на езика Rust и се разпространява под лицензите MIT и Apache 2.0.
ZLUDA 5 стана второто значително издание на проекта, формирано след почистване на кодовата база от код, разработен по време на работата на Анджей в компанията AMD. От 2022 година Анджей работи в AMD върху създаването на слой за съвместимост на GPU AMD с CUDA, но през 2024 година проектът беше прекратен. В съответствие с условията на договора и след получаване на разрешение за публикуване от представителя на AMD, Анджей разкри кода на разработките, създадени по време на работата си в AMD и позволяващи изпълнението на CUDA приложения върху стека ROCm и runtime HIP (Heterogeneous-computing Interface for Portability).
Миналата година Анджей беше принуден да премахне кода от публичен достъп след писмо от юристи, които дадоха да се разбере, че разрешението, дадено в хода на кореспонденцията по email, не е юридически валидно. След това Анджей започна работа по нова редакция на ZLUDA, формирана на основата на кодовата база, съществуваща преди началото на работата на Анджей в AMD. В текущия си вид разработката е съсредоточена върху изпълнението на приложения, използващи CUDA за ускоряване на задачи, свързани с машинното обучение. Проектът в момента е ограничен до работа на GPU AMD, но в бъдеще ще бъде адаптиран за GPU Intel.
Ключови подобрения в новото издание:
- Добавена е начална поддръжка за стартиране върху ZLUDA на фреймворковете llm.c, Llama.cpp и PyTorch за изпълнение на големи езикови модели, използващи CUDA оптимизации, приложими за GPU NVIDIA.
- Реализирана е начална поддръжка за стартиране на приложения, използващи за подобряване на производителността библиотеките cuBLAS, cuBLASLt и nvml.
- Добавена е прослойка zluda_trace за трасировка на приложения, използващи CUDA. С помощта на zluda_trace може да се диагностицират проблеми и да се открият недостатъци в ZLUDA, пречещи на нормалното изпълнение на приложението.
- Представена командната утилита zoc (офлайн компилатор ZLUDA), която позволява компилирането на файлове с NVIDIA PTX инструкции в междинно представяне на AMD RDNA (по-рано тази функционалност беше достъпна под формата на библиотечни функции).
- В PTX модулния зареждач е реализиран механизъм за кеширане на изпълняваните на GPU ядра. Кеширането позволява избягване на повторното извършване на ресурсоемки операции за компилиране на PTX (Parallel Thread Execution) инструкции в машинен код за зададения GPU.
Източник: opennet.ru
