ZLUDA переносит приложения CUDA на графические процессоры AMD

ZLUDA - это слой трансляции, позволяющий запускать немодифицированные CUDA-приложения с почти нативной производительностью на графических процессорах AMD. Но он проходит тонкую грань с точки зрения законности.

Инструментарий CUDA от NVIDIA предоставляет среду разработки для ускорения вычислительных приложений за счет использования мощности GPU. Однако GPU, на которые он нацелен, должны быть с поддержкой CUDA, а это исключает AMD.

Чтобы запустить приложения на базе CUDA на GPU, отличных от NVIDIA, необходимо либо перекомпилировать код, либо использовать слой трансляции. Таким образом, вы сможете запускать приложения только для NVIDIA на оборудовании AMD.
К таким приложениям, например, относятся Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM и т.д. ZLUDA ориентирована на конечных пользователей этих приложений. Конечный пользователь - это тот, кто использует программу CUDA, например, 3D-художник, использующий Blender. Разработчики, создающие CUDA-приложения, пока не рассматриваются из-за нехватки времени.

Первый способ перекомпиляции кода - самый сложный и требует большого количества ноу-хау. Способ ZLUDA означает, что вы можете запускать эти двоичные файлы как есть, поскольку на другом конце они будут переведены в инструкции GPU целевого оборудования.

CUDA-приложение поставляется с GPU-кодом, который может быть скомпилирован либо в PTX, либо в SASS. Разница в том, что PTX - это текстовая сборка, не специфичная для конкретной архитектуры NVIDIA GPU (она все равно специфична для аппаратных возможностей NVIDIA GPU), а SASS - это бинарная сборка, специфичная для конкретной архитектуры NVIDIA GPU.

Большинство приложений поставляют свой GPU-код на PTX. PTX совместим с будущими архитектурами GPU. По всем этим причинам компилятор ZLUDA поддерживает только PTX. Компилятор принимает PTX и выдает двоичный код AMD GPU в виде последовательности проходов. Выход каждого прохода является входом для следующего. Если говорить коротко, то принцип, которого придерживается ZLUDA, похож на принцип работы WINE или WSL.

Сама ZLUDA написана на языке Rust. Поэтому сборка проекта из исходников должна потребовать наличия на машине пользователя сборки cargo и установки следующих компонентов:

  • Git
  • CMake
  • Python 3
  • Rust (1.66.1 или новее)
  • Компилятор C++
  • (только для Windows) Последнее программное обеспечение AMD Radeon Software Adrenalin

Также, если вы собираете под Linux, существуют различные Docker-файлы разработчиков со всеми необходимыми зависимостями.

Проще всего, конечно, загрузить предварительно собранные двоичные файлы из репозитория Github, а затем следовать инструкциям для вашей платформы. Например, в Windows с помощью командной строки:

<ZLUDA_DIRECTORY>zluda. exe -- <APPLICATION> <APPLICATION_ARGUMENTS>

где <ZLUDA_DIRECTORY> - это каталог zluda, который вы только что распаковали.

Теперь вы можете запускать Blender на графических процессорах AMD!

Все бы ничего, но у инструментария есть потенциальные юридические проблемы. NVIDIA запретила запускать программы на базе CUDA на других аппаратных платформах с использованием слоев трансляции, но это юридическое уведомление было доступно только в Интернете и до недавнего времени не включалось в загружаемое программное обеспечение. Однако этот факт не помешал проекту набрать более 7,5 тысяч звезд на Github.

Как бы то ни было, если авантюра удастся и ZLUDA сможет удовлетворить запросы разработчиков, то откроется новый путь для написания CUDA-совместимого кода для графических процессоров AMD, причем не только на C++. Это означает и Python, как мы рассмотрели в статье "Программирование глубокого обучения на GPU с помощью Triton".

Поскольку C++ по умолчанию не очень удобен и сложен в освоении, эти свойства впоследствии отражаются и на самом инструментарии. Не проще ли использовать удобный язык для написания приложений глубокого обучения с GPU-ускорением? Это желание было исполнено компанией Open AI, которая объявила об этом:

Мы выпускаем Triton 1.0, Python-подобный язык программирования с открытым исходным кодом, который позволяет исследователям без опыта работы с CUDA писать высокоэффективный GPU-код - в большинстве случаев наравне с тем, что может создать эксперт.

Но чтобы уточнить утверждение об "альтернативе инструментарию CUDA", следует отметить, что, хотя Triton позволяет исследователям без опыта работы с CUDA писать приложения для вычислений на GPU и глубокого обучения, не нуждаясь в инструментарии CUDA, GPU, на которых они работают, должны быть с поддержкой CUDA. Поддержка AMD не входит в краткосрочные планы проекта.

Но благодаря ZLUDA ситуация может измениться.

ZLUDA переносит приложения CUDA на графические процессоры AMD
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
21 апреля 2024 г.
111
Теги: NVIDIA , AMD , ZLUDA , CUDA

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Google представляет библиотеку кодирования JPEG

Компания Google представила Jpegli - усовершенствованную библиотеку кодирования JPEG, которая сохраняет высокую обратную совместимость, но при этом предлагает расширенные возможности и улучшает степень сжатия на 35 % при высоких настройках качества сжатия.

16 апреля 2024 г.
40

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.