• Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"
  • 💰 В данном разделе действует акция с оплатой за новые публикации
  • 📌 Внимание! Перед публикацией новостей ознакомьтесь с правилами новостных разделов

Проект по внедрению CUDA на графические процессоры не-Nvidia демонстрирует значительный прогресс

Zluda.jpg

ZLUDA, CUDA-переводной слой, который в прошлом году едва не закрылся, но был спасен неизвестной стороной, на этой неделе поделился новостями о своем стабильном техническом прогрессе и расширении команды за последний квартал, сообщает Phoronix. Проект продолжает развивать свои возможности по запуску рабочих нагрузок CUDA на графических процессорах, отличных от Nvidia; на данный момент он больше сосредоточен на искусственном интеллекте, чем на других вещах. Тем не менее, также началась работа по обеспечению поддержки 32-битного PhysX, необходимой для совместимости со старыми играми на базе CUDA.

Возможно, самым важным для проекта ZLUDA является то, что его команда разработчиков выросла с одного до двух полноценных разработчиков, работающих над проектом. Второй разработчик, Violet, присоединился менее месяца назад и уже внес важные улучшения, в частности, в области поддержки рабочих нагрузок больших языковых моделей (LLM) через проект llm.c, согласно обновлению.

32-битный PhysX
Участник сообщества под ником @Groowy начал первоначальную работу по обеспечению поддержки 32-битного PhysX в ZLUDA, собрав подробные журналы CUDA, которые быстро выявили несколько ошибок. Поскольку некоторые из этих проблем могли также повлиять на функциональность 64-битного CUDA, их исправление было добавлено в официальный план развития. Однако для полной реализации поддержки 32-битного PhysX по-прежнему потребуется дополнительная помощь со стороны участников открытого исходного кода.

Совместимость с LLM.c
Разработчики ZLUDA работают над тестовым проектом под названием llm.c, который представляет собой небольшую примерную программу, пытающуюся запустить модель GPT-2 с помощью CUDA. Несмотря на то, что этот тест не является масштабным, он важен, поскольку ZLUDA впервые пытается обработать как обычные функции CUDA, так и специальные библиотеки, такие как cuBLAS (быстрые математические операции).

Эта тестовая программа делает 8186 отдельных вызовов функций CUDA, распределенных по 44 различным API. Вначале ZLUDA сразу же вылетала при первом же вызове. Благодаря множеству обновлений, предоставленных Violet, теперь она может дойти до 552-го вызова, прежде чем вылетит. Команда уже завершила поддержку 16 из 44 необходимых функций, поэтому она приближается к успешному выполнению всего теста. Как только это заработает, ZLUDA сможет поддерживать более крупное программное обеспечение, такое как PyTorch, в будущем.

Повышение точности ZLUDA
Основная цель ZLUDA — запускать стандартные программы CUDA на графических процессорах, отличных от Nvidia, при этом максимально точно повторяя поведение оборудования Nvidia. Это означает, что каждая инструкция должна либо давать идентичные результаты до последнего бита, либо оставаться в строгих числовых допусках по сравнению с оборудованием Nvidia. В более ранних версиях ZLUDA, до серьезной переработки кода, часто приходилось идти на компромисс в отношении точности, пропуская определенные модификаторы инструкций или не сохраняя полную точность.

В текущей реализации были достигнуты значительные успехи в исправлении этой проблемы. Для обеспечения точности выполняются тесты PTX «sweep» — систематические проверки с использованием промежуточного языка GPU Nvidia — чтобы подтвердить, что каждая комбинация инструкций и модификаторов дает правильные результаты для всех входных данных, что никогда ранее не использовалось. Выполнение этих проверок выявило несколько дефектов компилятора, которые были устранены позже. ZLUDA признает, что не все инструкции прошли эту строгую проверку, но подчеркивает, что некоторые из наиболее сложных случаев — такие как инструкция cvt — теперь подтверждены как битово точные.

Улучшение ведения журналов

Основой для работы любого программного обеспечения на базе CUDA на ZLUDA — будь то игра, 3D-приложение или ML-фреймворк — является наличие журналов о том, как программа взаимодействует с CUDA, что включает отслеживание как прямых вызовов API, так и недокументированных частей среды выполнения CUDA (или драйверов), а также любого использования специализированных библиотек производительности.

С недавним обновлением система ведения журналов ZLUDA была значительно улучшена. Новая реализация фиксирует более широкий спектр действий, которые ранее были невидимы, включая подробные трассировки внутреннего поведения, например, когда cuBLAS полагается на cuBLASLt или как cuDNN взаимодействует с драйверным API более низкого уровня.

Совместимость компилятора среды выполнения
Современные фреймворки GPU, такие как CUDA, ROCm/HIP, ZLUDA и OpenCL, должны динамически компилировать код устройства во время работы приложений, чтобы обеспечить возможность сборки и правильного выполнения старых программ GPU на новом поколении оборудования без изменений исходного кода.

В экосистеме ROCm/HIP от AMD эта компиляция «на лету» зависит от библиотеки comgr (сокращение от ROCm-CompilerSupport), компактной библиотеки с обширными возможностями для выполнения таких задач, как компиляция, связывание и дизассемблирование кода, доступной как в Linux, так и в Windows.

В версии ROCm/HIP 6.4 произошло значительное изменение бинарного интерфейса приложений (ABI): числовые коды, представляющие действия, были перегруппированы в новом ABI v3. Это привело к тому, что ZLUDA случайно вызывала неверные операции — например, пыталась выполнить связывание вместо компиляции, что приводило к ошибкам. Ситуация была еще хуже в Windows, где библиотека утверждала, что является версией 2.9, но внутренне использовала ABI v3, смешивая поведение.

Оригинал

Уникальность
 

Похожие темы

Сверху Снизу