Проект ZLUDA продолжит развитие в форме универсальной реализации CUDA

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

Изначально проект ZLUDA развивался для GPU Intel, но в 2021 году данная компания посчитала предоставление возможности запуска CUDA-приложений на GPU Intel не представляющей интереса для бизнеса и не стала поддерживать развитие инициативы. В начале 2022 года разработчик уволился из Intel и заключил контракт с AMD на разработку слоя для совместимости с CUDA для GPU данной компании. Спустя два года компания AMD потеряла интерес к возможности запуска CUDA-приложений на GPU AMD.

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

Новый вариант ZLUDA будет отталкиваться от кодовой базы, существовавшей до начала работы Анджея на AMD, не будет привязан к каким-то конкретным GPU и будет сосредоточен на выполнении приложений, использующих CUDA для ускорения задач, связанных с машинным обучением и искусственным интеллектом (ранее ZLUDA был ориентирован прежде всего на приложения для создания контента, такие как Arnold Render, Blender и 3DF Zephyr). Среди прочего планируется предоставить возможность работы фреймворков Llama.cpp, PyTorch и TensorFlow поверх ZLUDA с задействованием в них CUDA-оптимизаций, применяемых для GPU NVIDIA.

Первое время проект будет сфокусирован на работе на GPU AMD, но затем будет адаптирован для GPU Intel. Реализация для GPU AMD будет создана с чистого листа, будет поддерживать GPU, как минимум на базе архитектуры набора команд RDNA1, и будет использовать стек ROCm 6.1+ вместо стека ROCm 5, применявшегося в ранее созданной для AMD реализации. Паритета функциональности с прошлой реализацией, которую Анджей вынужден был убрать из открытого доступа, планируется достичь в третьем квартале 2025 года.

Release. Ссылка here.