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 offline compiler), позволяющая компилировать файлы с инструкциями NVIDIA PTX в промежуточное представление AMD RDNA (ранее данная функциональность была доступна в форме библиотечных функций).
- В загрузчике модулей PTX реализован механизм кэширования выполняемых на GPU ядер. Кэширование позволяет избежать повторного выполнения ресурсоёмких операций компиляции инструкций PTX (Parallel Thread Execution) в машинный код для заданного GPU.
Источник: http://www.opennet.ru/opennews/art.shtml?num=63997