Команда проекта ZLUDA представила пятую версию программного стека для запуска CUDA-приложений на ускорителях AMD и других вендоров, не внося изменений в исходный код.
Подробнее о ZLUDA 5
В пятой версии ZLUDA появился новый инструмент под названием zluda_trace, который позволяет отправить отчет о найденных ошибках. Пока эта функция поддерживается только на Linux, но в будущем она появится и на других ОС. Интеграция инструмента zluda_trace говорит о том, что заинтересованное сообщество хочет поддержать проект и помочь разработчикам устранять скрытые неполадки. Также в ZLUDA 5 была улучшена работа компилятора кода NVIDIA PTX для переноса кода на архитектуру AMD RDNA — ранее он был доступен только как часть библиотеки и активировался при загрузке модуля, но теперь разработчики добавили автономный компилятор zoc с интерфейсом командной строки, который аналогичен инструменту ptxas от NVIDIA. Этот компилятор принимает файл PTX и выводит LLVM IR, а также ассемблерную сборку RDNA, сгенерированную компилятором ROCm. Инструмент уже активно используется и получил ряд улучшений для оптимизации эргономики.
Также команда ZLUDA смогла добавить поддержку проектов llm.c test_gpt2fp32cu и test_gptc2cu, но только если сборки выполнены без функций Multi-GPU и Flash Attention — реализация этих технологий пока невозможна из-за отсутствующих API в MIOpen. Еще одно улучшение заключается в поддержке серверной части CUDA для llama.cpp на ZLUDA. Предварительные тесты показывают, что производительность ZLUDA сопоставима с результатами программного стека ROCm. Помимо этого, разработчики продолжают работу над внедрением поддержки PyTorch — уже была добавлена библиотека zluda_ld для обхода путей к библиотекам CUDA, но пока сроки полноценной реализации неизвестны, так как участники проекта сталкиваются с проблемами снижения скорости компиляции и ошибок в платформе LLVM AMDGPU.
Среди дополнительных нововведений ZLUDA 5 можно выделить:
Кэш ядер: Добавлен механизм кэширования для ускорения загрузки модулей PTX, что значительно снижает затраты на компиляцию при работе с множеством модулей.
Библиотеки производительности: Реализована начальная поддержка запуска приложений, использующих cuBLAS, cuBLASLt и nvml. Список поддерживаемых операций будет расширяться.
Тестирование: Настроена система непрерывной интеграции, включая модульные тесты для каждого PR и ночные прогоны тестов PTX, что позволяет предотвратить регрессии.
Превью-сборки: Запущена автоматическая публикация пререлизных сборок после каждого изменения кода, что позволяет пользователям тестировать новейшие функции без самостоятельной сборки.
Корректность: Благодаря улучшениям в CI достигнута побитовая точность результатов на GPU NVIDIA для почти всех поддерживаемых операций, за редкими исключениями, такими как 32-битный квадратный корень с нестандартным округлением и 64-битные трансцендентные функции. Количество неподдерживаемых инструкций продолжает сокращаться.
Выводы
Релиз ZLUDA 5 показывает, что проект постепенно превращается из эксперимента в полноценный инструмент совместимости между CUDA и GPU других производителей. Несмотря на то, что ROCm от AMD остается более зрелой и производительной платформой для разработки искусственного интеллекта, ZLUDA решает другую задачу — она служит мостом, позволяя запускать уже собранные CUDA-приложения без перекомпиляции и изменений исходников, что критично для разработчиков, которым нужно протестировать свои CUDA-решения на ускорителях AMD или других ускорителях без сложной миграции кода.
Продолжная использовать наш сайт, вы даете согласие на использование файлов Cookie, пользовательских данных (IP-адрес, вид операционной системы, тип браузера, сведения о местоположении, источник, откуда пришел на сайт пользователь, с какого сайта или по какой рекламе, какие страницы
открывает и на какие страницы нажимает пользователь) в целях функционирования сайта, проведения статистических исследований и обзоров. Если вы не хотите, чтобы ваши данные обрабатывались, покиньте сайт.