Выпуск ZLUDA 4, универсальной реализации технологии CUDA

Анджей Яник (Andrzej Janik) представил обновление проекта ZLUDA, развивающего открытую реализацию технологии CUDA. Целью проекта является предоставление возможности запуска немодифицированных приложений CUDA на системах с GPU, отличных от GPU NVIDIA, с производительностью, близкой к производительности приложений, выполняемых без прослоек. Код проекта распространяется под лицензиями MIT и Apache 2.0.

ZLUDA 4 преподносится как первый выпуск, сформированный после чистки кодовой базы от кода, разработанного во время работы Анджея в компании AMD. С 2022 года Анджей работал в AMD над созданием слоя для совместимости GPU AMD с CUDA, но в 2024 году проект был свернут. В соответствии с условиями контракта и после получения разрешения на публикацию от представителя AMD, Анджей открыл код наработок, созданных во время работы в AMD и позволяющих выполнять CUDA-приложения поверх стека ROCm и runtime HIP (Heterogeneous-computing Interface for Portability). В октябре Анджей был вынужден убрать код из открытого доступа после письма от юристов, давших понять, что разрешение в ходе переписки по email не имеет юридической силы.

Новая редакция ZLUDA сформирована на основе кодовой базы, существовавшей до начала работы Анджея в AMD, не привязана к конкретным GPU и сосредоточена на выполнении приложений, использующих CUDA для ускорения задач, связанных с машинным обучением и искусственным интеллектом. Проект пока ограничивается работой на GPU AMD, но в дальнейшем будет адаптирован для GPU Intel. Выпуск ZLUDA 4 написан на языке Rust и ориентирован на выполнение тестового набора Geekbench 5.

Новая версия включает новый парсер для PTX, промежуточного языка, используемого в GPU NVIDIA. Выпуск также примечателен уходом от эмуляции специфичных для GPU NVIDIA инструкций инкремента и декремента по модулю, вместо которых теперь вызываются аналогичные инструкции GPU AMD. Указанные изменения позволили добиться повышения производительности при прохождении теста Geekbench примерно на 10%, по сравнению с OpenCL и веткой ZLUDA 3.


Release. Ссылка here.