Опубликован инструментарий ZLUDA, позволяющий запускать CUDA-приложения на GPU AMD

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3252
Зарегистрирован: 20.08.2022

#

Опубликован инструментарий ZLUDA, позволяющий запускать CUDA-приложения на GPU AMD
Дата публикации:Mon, 12 Feb 2024 22:58:50 +0300




Проект ZLUDA подготовил открытую реализацию технологии CUDA для GPU AMD, позволяющую выполнять немодифицированные CUDA-приложения с производительностью, близкой к производительности приложений, выполняемых без прослоек. Опубликованный инструментарий обеспечивает бинарную совместимость с существующими CUDA-приложениями, собранными при помощи компилятора CUDA для GPU NVIDIA. Реализация работает поверх развиваемого компанией AMD стека ROCm и runtime HIP (Heterogeneous-computing Interface for Portability). Код проекта написан на языке Rust и распространяется под лицензиями MIT и Apache 2.0. Поддерживается работа в Linux и Windows.




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



В начале 2022 года разработчик уволился из Intel и заключил контракт компанией AMD на разработку слоя для совместимости с CUDA. Компания AMD попросила во время разработки не афишировать интерес AMD к проекту ZLUDA и не делать коммитов в публичный репозиторий ZLUDA. Спустя два года компания AMD решила, что запуск CUDA-приложений на GPU AMD не представляет интереса для бизнеса, что по условию контракта позволило разработчику отрыть свои наработки. Так как производители GPU перестали финансировать проект, его судьба теперь зависит от интереса сообщества и поступления предложений о сотрудничестве от других компаний. Без внешней поддержки проект будет развиваться только в направлениях, интересных лично автору, таких как DLSS (Deep Learning Super Sampling).



В текущем виде уровень качества реализации оценивается как альфа-версия. При этом ZLUDA уже может использоваться для выполнения многих CUDA-приложений, включая Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM и Arnold. Обеспечена минимальная поддержка примитивов и библиотек cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL и NVML. Добавлен прототип реализации фреймворка OptiX.



Первый запуск CUDA-приложений под управлением ZLUDA производится с заметными задержками, из-за того, что ZLUDA выполняет компиляцию GPU-кода. В последующих запусках подобная задержка отсутствует, так как скомпилированный код сохраняется в кэше. В процессе выполнения скомпилированного кода производительность близка к нативной. Например, при выполнении пакета Geekbench на GPU AMD Radeon 6800 XT вариант тестового набора для CUDA, выполняемый при помощи ZLUDA, показал заметно более высокую производительность, чем вариант на базе OpenCL.
Изображение


Поддержка официального CUDA Driver API и изученной при помощи обратного инжиниринга части недокументированного API CUDA реализована в ZLUDA через замену вызовов функций на аналогичные функции, предоставляемые в HIP runtime, который во многом походит на CUDA. Например, функция cuDeviceGetAttribute() заменяется на hipDeviceGetAttribute(). Похожим образом обеспечивается и совместимость с библиотеками NVIDIA, такими как NVML, cuBLAS и cuSPARSE, - для подобных библиотек в ZLUDA предоставляются транслирующие библиотеки с тем же именем и тем же набором функций, построенные в виде надстроек над похожими библиотеками AMD. GPU-код приложений, скомпилированный в представление PTX (Parallel Thread Execution), транслируется специальным компилятором в промежуточное представление LLVM IR, на основе которого генерируется бинарный код для GPU AMD.
Изображение





Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60591

Жизнь за Нер'зула!

Ответить