Анализ Юридическая команда AMD, судя по всему, вернула себе контроль над большей частью кодовой базы проекта ZLUDA. Проект с открытым исходным кодом, поддержку которого House of Zen прекратил в начале этого года, позволил скомпилированному коду CUDA работать на графических процессорах сторонних производителей.
ZLUDA была представлена как способ запуска чистых двоичных файлов CUDA на графических процессорах Intel. Руководитель проекта Анджей Яник в конечном итоге подписал контракт на разработку с AMD, чтобы также ориентироваться на ее графические процессоры. CUDA — это набор инструментов Nvidia, который позволяет разработчикам использовать графические процессоры для запуска своего кода.
Проектные обязательства по ZLUDA прекратились в начале 2022 года по причинам, которые стали ясны только в начале этого года — когда AMD прекратила финансирование его разработки. Работа возобновилась в открытом доступе, поскольку Phoronix заработал в феврале.
ZLUDA — интересный проект, поскольку он предлагает в качестве слоя трансляции возможность запускать скомпилированные программы CUDA напрямую на оборудовании AMD — и некоторое время там, на Intel — без необходимости портировать и перекомпилировать исходный код. Например, ранее мы рассматривали способ использования ZLUDA для запуска Stable Diffusion в Automatic1111 на картах AMD под Windows.
Яник смог опубликовать свою работу над проектом в начале этого года, поскольку считалось, что пункт в контракте на разработку позволял ему возобновить работу в открытом доступе, если AMD потеряет интерес. «Одним из условий моего контракта с AMD было то, что если AMD посчитает его неподходящим для дальнейшей разработки, я мог бы его опубликовать», — написал он в README для версии 3.
Однако, похоже, юридическая команда AMD пришла к другому выводу. В заявлении, прикрепленном на странице проекта на GitHub на этой неделе, Яник написал, что после первоначального предоставления разрешения на публикацию кода AMD изменила свое решение.
Код, который был здесь ранее, был удален по просьбе AMD
«Код, который был здесь ранее, был удален по запросу AMD. Код был опубликован с одобрения AMD по электронной почте. Юридический отдел AMD теперь заявляет, что он не имеет юридической силы, поэтому и откат», — написал он.
Яник осторожно отметил, что удаление исходило от AMD и что он «не получал никаких юридических угроз или каких-либо сообщений от Nvidia».
Ранее на этой неделе в сообщении на Reddit Яник отметил, что он «проконсультировался с юристом: законность электронных писем не имеет значения. Выбор стоит между переписыванием — дешевле, гарантированный результат — и возможным оспариванием в суде — дороже, нет гарантии желаемого результата».
Мы попросили AMD высказать свою версию этой истории, и хотя ее представители подтвердили нашу просьбу, мы все еще ждем ответа. Яник отказался от комментариев.
Это не конец проекта ZLUDA. Его участники по-прежнему привержены восстановлению проекта из кодовой базы «до AMD» и отмечают, что финансирование для продолжения разработки в перспективе. Что может измениться, так это масштаб проекта — разработчики отмечают, что «некоторые функции не вернутся», и намекают на поддержку Nvidia GameWorks — промежуточного программного обеспечения, которое компания предлагает разработчикам для ускорения таких задач, как создание визуальных эффектов.
Зачем хоронить ZLUDA?
Хотя мы не знаем, почему изменилось отношение AMD к ZLUDA, на это решение могли повлиять несколько факторов.
Первая и самая очевидная причина заключается в том, что AMD просто хотела дистанцироваться от любых правовых последствий поддержки разработки проекта, который может нарушать условия обслуживания Nvidia CUDA.
Условия обслуживания Nvidia явно ограничили использование слоев трансляции для запуска кода CUDA на других аппаратных платформах с середины 2021 года. «Вы не можете осуществлять обратную разработку, декомпилировать или дизассемблировать любую часть выходных данных, созданных с использованием элементов SDK, с целью перевода таких выходных артефактов для целевой платформы, отличной от Nvidia», — говорится в EULA.
Если разработчики станут зависеть от ZLUDA при написании кода для графических процессоров как Team Red, так и Team Green, это может привести к необходимости быстрых переписываний, если Nvidia решит усилить свою политику мелкого шрифта.
В том же духе, Radeon wrangler, возможно, начал беспокоиться о том, что даже без его поддержки постоянная доступность ZLUDA может в конечном итоге подорвать собственные программные усилия AMD. Зачем оптимизировать приложения для ROCm или HIP, если вместо этого можно просто запустить код CUDA на графических процессорах AMD? И хотя у AMD есть собственный инструмент трансляции CUDA — о котором мы немного поговорим — он в основном нацелен на портирование и перекомпиляцию исходного кода, а не просто на запуск уже созданных программ CUDA на своих ускорителях.
Учитывая, что уведомление об удалении пришло от юридической команды AMD, мы также не можем исключить возможность разногласий по поводу того, какой код, созданный командой ZLUDA, может быть опубликован, а какой нет.
Конечно, это не первый случай, когда чрезмерно усердные юристы, которым поручено защищать права интеллектуальной собственности клиента, натворили дел. Вы можете вспомнить прошлый год, когда юристы, нанятые для защиты авторских прав и товарных знаков Arm, в конечном итоге добились отключения доменов гуру языка ассемблера.
Не только ZLUDA
Как мы уже упоминали ранее, ZLUDA — далеко не единственный проект, направленный на то, чтобы приложения CUDA работали на графических процессорах, отличных от Nvidia. В прошлом месяце появился набор инструментов компилятора под названием SCALE в бета-версии.
В сообщении в блоге, анонсирующем проект, Майкл Сёндергаард, который, согласно LinkedIn, является генеральным директором Spectral Compute, описал SCALE как «набор инструментов GPGPU, аналогичный набору инструментов CUDA от Nvidia, с возможностью создания двоичных файлов для графических процессоров не-Nvidia при компиляции кода CUDA».
На данный момент проект нацелен на графические процессоры AMD, но Сёндергаард написал, что поддержка дополнительных поставщиков находится в разработке.
Сама AMD предлагает HIPIFY, который предоставляет инструменты для «автоматического» перевода исходного кода CUDA в переносимый код HIP C++. Но, как наш родственный сайт The Next PlatformКак было отмечено в конце прошлого года, автоматизация HIPIFY слабее, чем можно было бы подумать из описания AMD.
Одной из проблем является то, что HIPIFY не учитывает аргументы шаблона на стороне устройства в памяти текстур или несколько файлов заголовков CUDA, и, таким образом, требует ручного вмешательства разработчиков.
Мы понимаем, что HIPIFY отличается от таких усилий, как ZLUDA, дизайном, который фокусируется на трансляции исходного кода — в отличие от запуска собственных немодифицированных двоичных файлов CUDA.
Похожий проект, который мы рассмотрели, — это набор инструментов SYCL, входящий в состав платформы oneAPI компании Intel. Если вы не знакомы, SYCL похож на HIPIFY тем, что он выполняет большую часть тяжелой работы — якобы до 95 процентов — по переносу кода CUDA в формат, который может работать на ускорителях, отличных от Nvidia. В отличие от HIPIFY, SYCL разработан как кроссплатформенный, что позволяет запускать код на графических процессорах AMD, Intel и Nvidia.
Если вам интересно узнать что-то еще, рекомендуем ознакомиться с The Next Platform для более глубокого погружения в портирование CUDA на альтернативные ускорители. ®