РПЦм
![]() | |
Разработчик(и) | АМД |
---|---|
Первоначальный выпуск | 14 ноября 2016 г |
Стабильная версия | 6.1.2 / 4 июня 2024 г [1] |
Репозиторий | Мета-репозиторий github |
Написано в | C , C++ , Python , Фортран , Джулия |
Промежуточное ПО | БЕДРО |
Двигатель | AMDgpu Драйвер ядра , HIPCC , LLVM. на основе компилятор |
Операционная система | Линукс , Винда [2] |
Платформа | Поддерживаемые графические процессоры |
Предшественник | Близко к металлу , Стрим , HSA |
Размер | <2 ГиБ |
Тип | GPGPU Библиотеки и API |
Лицензия | МОЯ лицензия |
Веб-сайт | www |
РПЦм [3] — это программный стек Advanced Micro Devices (AMD) для программирования графических процессоров (GPU). ROCm охватывает несколько областей: вычисления общего назначения на графических процессорах (GPGPU), высокопроизводительные вычисления (HPC), гетерогенные вычисления . Он предлагает несколько моделей программирования: HIP ( программирование на основе ядра GPU ), OpenMP / интерфейс передачи сообщений (MPI) ( программирование на основе директив ) и OpenCL .
ROCm — бесплатное программное обеспечение с открытым исходным кодом (за исключением пакетов прошивки графического процессора). [4] ), и распространяется по различным лицензиям. ROCm первоначально обозначал платформу Radeon Open Compute ; однако, поскольку Open Compute является зарегистрированной торговой маркой, ROCm больше не является аббревиатурой — это просто стек AMD с открытым исходным кодом, разработанный для вычислений на графических процессорах.
Предыстория [ править ]
Первым программным стеком GPGPU от ATI /AMD был Close to Metal , который стал Stream .
ROCm был запущен примерно в 2016 году. [5] с Больцмановской инициативой . [6] Стек ROCm основан на предыдущих стеках графических процессоров AMD; некоторые инструменты восходят к GPUOpen , а другие — к гетерогенной системной архитектуре (HSA).
системы Промежуточный язык архитектуры гетерогенной
ХСАИЛ [7] был нацелен на создание промежуточного представления среднего уровня, независимого от аппаратного обеспечения, которое можно было бы JIT-компилировать для конечного оборудования (GPU, FPGA...) с использованием соответствующего финализатора. От этого подхода отказались в ROCm: теперь он строит только код графического процессора, используя LLVM , и его серверную часть AMDGPU , которая была передана в исходную версию, [8] хотя исследования такой расширенной модульности с помощью LLVM MLIR все еще проводятся. [9]
Способности программирования [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( январь 2022 г. ) |
ROCm как стек варьируется от драйвера ядра до приложений конечного пользователя.У AMD есть вводные видеоролики об оборудовании AMD GCN, [10] и программирование ROCm [11] через свой учебный портал. [12]
Одно из лучших технических представлений о стеке и программировании ROCm/HIP до сих пор можно найти на Reddit. [13]
Аппаратная поддержка [ править ]
ROCm в первую очередь ориентирован на дискретные профессиональные графические процессоры. [14] но неофициальная поддержка включает семейство Vega и потребительские графические процессоры RDNA 2 .
Ускоренные процессоры (APU) «включены», но официально не поддерживаются. Наличие функционала ROCm здесь задействовано. [15]
Графические процессоры профессионального уровня [ править ]
Ускорители AMD Instinct являются первоклассными представителями ROCm, наряду с профессиональной серией графических процессоров Radeon Pro : они в основном имеют полную поддержку.
Единственным графическим процессором потребительского уровня, имеющим относительно равную поддержку, по состоянию на январь 2022 года является Radeon VII (GCN 5 — Vega).
Графические процессоры потребительского уровня [ править ]
Название графических процессоров серии | Южный Острова | Море Острова | вулканический Острова | Арктика Острова/Полярная звезда | Вега | Нави 1X | Корабли 2X | |
---|---|---|---|---|---|---|---|---|
Выпущенный | январь 2012 г. | Сентябрь 2013 г. | июнь 2015 г. | июнь 2016 г. | июнь 2017 г. | июль 2019 г. | ноябрь 2020 г. | |
Маркетинговое название | Радеон HD 7000 | Радеон Рх 200 | Радеон Рх 300 | Радеон РХ 400/500 | Radeon RX Vega/Radeon VII (7 нм) | Радеон РХ 5000 | Радеон РХ 6000 | |
Поддержка AMD | ![]() | ![]() | ||||||
Набор инструкций | Набор инструкций GCN | Набор инструкций RDNA | ||||||
Микроархитектура | GCN 1-го поколения | GCN 2-го поколения | GCN 3-го поколения | GCN 4-го поколения | GCN 5-го поколения | РДНА | РДНА 2 | |
Тип | Единая шейдерная модель | |||||||
РПЦм [16] | ![]() | ![]() | ![]() | ![]() | ![]() | |||
OpenCL | 1.2 (в Linux : 1.1 (без поддержки изображений) с Mesa 3D) | 2.0 (драйвер Адреналин на Win7+ ) (в Linux : 1.1 (без поддержки изображений) с Mesa 3D, 2.0 с драйверами AMD или AMD ROCm) | 2.0 | 2.1 [19] | ||||
Вулкан | 1.0 ( Победа 7+ или Меса 17+ ) | 1.2 (Adrenalin 20.1, Linux Mesa 3D 20.0) | ||||||
Шейдерная модель | 5.1 | 5.1 6.3 | 6.4 | 6.5 | ||||
OpenGL | 4.6 (on Linux: 4.6 (Mesa 3D 20.0)) | |||||||
Директ3D | 11 ( 11_1 ) 12 ( 11_1 ) | 11 ( 12_0 ) 12 ( 12_0 ) | 11 ( 12_1 ) 12 ( 12_1 ) | 11 ( 12_1 ) 12 ( 12_2 ) | ||||
/drm/amdgpu [а] | Экспериментальный [20] | ![]() |
- ^ DRM ( Direct Rendering Manager ) — компонент ядра Linux .
Экосистема программного обеспечения [ править ]
Учебные ресурсы [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( январь 2022 г. ) |
Менеджер по продукту AMD ROCm Терри Дим провел экскурсию по стеку. [21]
Сторонняя интеграция [ править ]
Основными потребителями стека являются приложения машинного обучения и высокопроизводительных вычислений/GPGPU.
Машинное обучение [ править ]
Различные среды глубокого обучения имеют бэкэнд ROCm: [22]
- PyTorch
- Тензорфлоу
- ОННКС
- MXNet
- CuPy [23]
- МИОпен
- Кафе
- Iree (который использует многоуровневое промежуточное представление LLVM (MLIR))
- вызов.cpp
Суперкомпьютеры [ править ]
ROCm набирает обороты в топ-500 . [24] ROCm используется с суперкомпьютерами Exascale El Capitan. [25] [26] и Граница .
Некоторое сопутствующее программное обеспечение можно найти на сайте AMD Infinity Hub .
Другое ускорение и взаимодействие графики [ править ]
Начиная с версии 3.0, Blender теперь может использовать вычислительные ядра HIP для своих циклов рендеринга . [27]
Другие языки [ править ]
Julia[editДжулия
У Юлии есть пакет AMDGPU.jl, [28] который интегрируется с LLVM и выбирает компоненты стека ROCm. Вместо компиляции кода через HIP AMDGPU.jl использует компилятор Julia для непосредственной генерации LLVM IR, который позже используется LLVM для генерации собственного кода устройства. AMDGPU.jl использует реализацию HSA ROCr для загрузки собственного кода на устройство и его выполнения аналогично тому, как HIP загружает собственный сгенерированный код устройства.
AMDGPU.jl также поддерживает интеграцию с rocBLAS (для BLAS), rocRAND (для генерации случайных чисел) и rocFFT (для БПФ) ROCm. В будущем планируется интеграция с rocALUTION, rocSOLVER, MIOpen и некоторыми другими библиотеками ROCm.
Распространение программного обеспечения [ править ]
Официальный [ править ]
Инструкции по установке для Linux и Windows приведены в официальной документации AMD ROCm . Программное обеспечение ROCm в настоящее время распространено в нескольких общедоступных репозиториях GitHub . В основном общедоступном мета-репозитории имеется XML-манифест для каждого официального выпуска: использование git-repo , инструмента контроля версий , построенного на основе Git , является рекомендуемым способом локальной синхронизации со стеком. [29]
AMD начинает распространять контейнерные приложения для ROCm, в частности приложения для научных исследований, собранные в рамках AMD Infinity Hub . [30]
AMD распространяет пакеты, адаптированные для различных дистрибутивов Linux.
Сторонние [ править ]
Растет сторонняя экосистема упаковки ROCm .
Дистрибутивы Linux официально включают в себя (изначально) ROCm с различной степенью развития: Arch Linux , [31] Генту, [32] Дебиан , Федора , [33] GNU Guix и NixOS .
Есть спак пакеты. [34]
Компоненты [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( январь 2022 г. ) |
Есть один компонент пространства ядра, ROCk, а остальные — в стеке около сотни компонентов — состоят из модулей пользовательского пространства .
Неофициальная типографская политика заключается в использовании: заглавных букв ROC и строчных букв для библиотек низкого уровня, например ROCt, и наоборот для библиотек, ориентированных на пользователя, например rocBLAS. [35]
AMD активно развивается вместе с сообществом LLVM, но внедрение не происходит мгновенно и по состоянию на январь 2022 года все еще отстает. [36] AMD по-прежнему официально выпускает различные вилки LLVM [37] [38] [9] для частей, которые еще не переведены в исходную версию — оптимизации компилятора, которые должны оставаться проприетарными, поддержка отладки, разгрузка OpenMP и т. д.
Низкий уровень [ править ]
ROCk — драйвер ядра [ править ]
ROCm — Библиотеки устройств [ править ]
Поддержка библиотек, реализованных в виде битового кода LLVM. Они предоставляют различные утилиты и функции для математических операций, атомарности, запросов параметров запуска, запуска ядра на устройстве и т. д.
ROCt — Thunk [ править ]
Thunk отвечает за все мыслительные процессы и организацию очередей , поступающих в стек.
ROCr — Время выполнения [ править ]
Среда выполнения ROC — это набор API/библиотек, который позволяет запускать вычислительные ядра хост-приложениями. Это реализация API среды выполнения HSA от AMD. [39] Он отличается от среды общего языка ROC.
ROCm — Поддержка компилятора [ править ]
Менеджер объектов кода ROCm отвечает за взаимодействие с промежуточным представлением LLVM .
Средний уровень [ править ]
Общеязыковая среда выполнения ROCclr [ править ]
Среда общего языка — это уровень косвенности, адаптирующий вызовы к ROCr в Linux и PAL в Windows.Раньше у него была возможность маршрутизации между разными компиляторами, например, компилятором HSAIL. Теперь он поглощается верхними уровнями косвенности (HIP и OpenCL).
OpenCL [ править ]
ROCm поставляет свой устанавливаемый загрузчик клиентского драйвера (ICD) и OpenCL. [40] реализация в комплекте .По состоянию на январь 2022 года ROCm 4.5.2 поставляется с OpenCL 2.2 и отстает от конкурентов. [41]
— гетерогенный интерфейс портативности для HIP
Реализация AMD для своих графических процессоров называется HIPAMD . Существует также реализация ЦП, в основном для демонстрационных целей.
HIPCC [ править ]
HIP создает компилятор HIPCC, который либо оборачивает Clang и компилирует с открытым LLVM-сервером AMDGPU, либо перенаправляет на компилятор NVIDIA . [42]
HIPIFY [ править ]
HIPIFY — это инструмент компиляции из исходного кода. Он преобразует CUDA в HIP и обратно, используя либо инструмент на основе Clang, либо сценарий Perl, подобный sed .
ГПУФОРТ [ править ]
Как и HIPIFY, GPUFORT — это инструмент, компилирующий исходный код в другие источники на языке третьего поколения, позволяющий пользователям переходить с CUDA Fortran на HIP Fortran. Это также в репертуаре исследовательских проектов, даже в большей степени. [43]
Высокий уровень [ править ]
Библиотеки высокого уровня ROCm обычно используются непосредственно прикладным программным обеспечением, например платформами машинного обучения . Большинство следующих библиотек относятся к категории General Matrix Multiply (GEMM), в которой архитектура графического процессора превосходна.
Большинство этих пользовательских библиотек имеют двойную форму: hip для уровня косвенного обращения, который может маршрутизироваться к оборудованию Nvidia, и roc для реализации AMD. [44]
rocBLAS / hipBLAS [ править ]
rocBLAS и hipBLAS занимают центральное место в библиотеках высокого уровня, это реализация AMD для подпрограмм базовой линейной алгебры .Он использует библиотеку Tensile в частном порядке.
rocSOLVER / hipSOLVER [ править ]
Эта пара библиотек представляет собой реализацию LAPACK для ROCm и тесно связана с rocBLAS.
Утилиты [ править ]
- Инструменты разработчика ROCm : отладка, трассировщик, профилировщик, интерфейс управления системой, пакет проверки, управление кластером.
- Инструменты GPUOpen : анализатор графического процессора, визуализатор памяти...
- Внешние инструменты: radeontop ( TUI ) обзор
Сравнение с конкурентами [ править ]
ROCm конкурирует с другими стеками вычислений на графических процессорах: Nvidia CUDA и Intel OneAPI .
Нвидиа editКУДА
CUDA от Nvidia имеет закрытый исходный код, тогда как AMD ROCm — с открытым исходным кодом. Существует программное обеспечение с открытым исходным кодом, созданное на основе CUDA с закрытым исходным кодом, например RAPIDS .
CUDA может работать на потребительских графических процессорах, тогда как поддержка ROCm в основном предлагается для профессионального оборудования, такого как AMD Instinct и AMD Radeon Pro .
Nvidia поставляет интерфейс Clang и его для параллельного выполнения потоков серверную часть LLVM (PTX) под названием компилятор Nvidia CUDA (NVCC).
Intel OneAPI [ править ]
Как и ROCm, oneAPI имеет открытый исходный код, и все соответствующие библиотеки опубликованы на его странице GitHub .
Unified Acceleration Foundation (UXL) [ править ]
Unified Acceleration Foundation (UXL) — это новый технологический консорциум, который работает над продолжением инициативы OneAPI с целью создать новую экосистему программного обеспечения для ускорителей открытых стандартов, соответствующие проекты открытых стандартов и спецификаций через рабочие группы и группы по специальным интересам (SIG). ). Цель будет конкурировать с CUDA от Nvidia. Основными компаниями, стоящими за ним, являются Intel, Google, ARM, Qualcomm, Samsung, Imagination и VMware. [45]
См. также [ править ]
- Программное обеспечение AMD — общий обзор драйверов, API и усилий AMD по разработке.
- GPUOpen — дополнительный графический стек AMD.
- AMD Radeon Software – канал распространения программного обеспечения AMD.
Ссылки [ править ]
- ^ «Выпуск ROCm 6.1.2» . Гитхаб . Проверено 10 июня 2024 г.
- ^ «Новый HIP SDK помогает демократизировать вычисления на графических процессорах» . 27 июля 2023 г.
- ^ «Вопрос: Что означает ROCm? · Проблема № 1628 · RadeonOpenCompute/ROCm» . Гитхаб.com . Проверено 18 января 2022 г.
- ^ «Debian — Подробная информация о пакете прошивки-amd-graphics в buster» . Packages.debian.org . Проверено 18 января 2022 г.
- ^ «AMD @ SC16: выпущена Radeon Open Compute Platform (ROCm) 1.3, Boltzmann воплощается в жизнь» . anandtech.com . Проверено 19 января 2022 г.
- ^ «AMD @ SC15: объявлена инициатива Больцмана — компиляторы C++ и CUDA для графических процессоров AMD» . anandtech.com . Проверено 19 января 2022 г.
- ^ «Справочное руководство программиста HSA: HSAIL Virtual ISA и модель программирования, средство записи компилятора и формат объекта (BRIG)» (PDF) . Фонд HSA. 2 мая 2018 г. Проверено 1 августа 2023 г.
- ^ «Руководство пользователя для серверной части AMDGPU — документация LLVM 13» . Llvm.org . Проверено 18 января 2022 г.
- ↑ Перейти обратно: Перейти обратно: а б «Инфраструктура компилятора LLVM» . Гитхаб . 19 января 2022 г.
- ^ «Введение в аппаратное обеспечение графического процессора AMD» – на сайте www.youtube.com.
- ^ «Основы HIP-программирования» . Архивировано из оригинала 7 февраля 2023 года.
- ^ «Учебный центр РОКм™» . АМД .
- ^ «Программирование AMD ROCm/HCC: Введение» . 26 декабря 2018 г.
- ^ «Документация AMD — Портал» .
- ^ «Вот то, что вы не видите каждый день: PyTorch работает поверх ROCm на ноутбуке 6800M (6700XT)! Потребовалось множество мелких настроек конфигурации и несколько патчей, но он действительно функционально работает. ОГРОМНО!» . 10 декабря 2021 г.
- ^ «Руководство по началу работы с ROCm, версия 5.2.3» .
- ^ «Практическое руководство: стабильная диффузия на графическом процессоре AMD» . 23 сентября 2022 г.
- ^ «Есть какие-нибудь новости о поддержке 5700 Xt?» . Гитхаб .
- ^ «Характеристики AMD Radeon RX 6800 XT» . TechPowerUp . Проверено 1 января 2021 г.
- ^ Ларабель, Майкл (7 декабря 2016 г.). «Лучшие возможности ядра Linux 4.9» . Фороникс . Проверено 7 декабря 2016 г.
- ^ «Презентация РПЦм» . HPCwire.com . 6 июля 2020 г. Проверено 18 января 2022 г.
- ^ «AMD представляет графические процессоры Instinct MI200 для глубокого обучения» . Infoq.com . Проверено 18 января 2022 г.
- ^ «Использование CuPy на графическом процессоре AMD (экспериментальное)» .
- ^ «AMD отходит от Intel в числе 500 лучших суперкомпьютеров мира, поскольку надвигается война за графические процессоры» . 16 ноября 2020 г.
- ^ «Подробное описание суперкомпьютера El Capitan: процессоры и графические процессоры AMD обеспечивают производительность вычислений 2 эксафлопс» .
- ^ «Суперкомпьютер El Capitan от Ливермора представит локальное хранилище HPE Rabbit рядом с узлом» . 18 февраля 2021 г.
- ^ «Blender 3.0 выводит поддержку графических процессоров AMD на новый уровень. Бета-поддержка уже доступна!» . Gpuopen.com . 15 ноября 2021 г. . Проверено 18 января 2022 г.
- ^ «AMD ROCm ⋅ JuliaGPU» . juliagpu.org .
- ^ «Установка ROCm v4.3 — документация ROCm 4.5.0» . Rocmdocs.amd.com . Проверено 18 января 2022 г.
- ^ «Выполнять научные приложения на ускорителях AMD Instinct стало проще» . HPCwire.com . 18 октября 2021 г. Проверено 25 января 2022 г.
- ^ «ROCm для Arch Linux» . Гитхаб.com . 17 января 2022 г. . Проверено 18 января 2022 г.
- ^ «Gentoo Linux расширяет возможности AMD ROCm и добивается прогресса в области RISC-V, LTO+PGO Python» . Фороникс.com . Проверено 18 января 2022 г.
- ^ «Разработчики Fedora и Debian рассматривают упаковку ROCm для упрощения вычислений на графическом процессоре Radeon» . Фороникс.com . Проверено 18 января 2022 г.
- ^ Гамблин, Тодд; ЛеЖандр, Мэтью; Коллетт, Майкл Р.; Ли, Грегори Л.; Муди, Адам; де Супински, Бронис Р.; Футрал, Скотт (15 ноября 2015 г.). «Менеджер пакетов Spack: наведение порядка в хаосе программного обеспечения для HPC» — через GitHub.
- ^ Блур, Корделл. «20211221 Примечания к сеансу упаковки и небольшое обновление» . [электронная почта защищена] (список рассылки) . Проверено 18 января 2022 г.
- ^ «[Официальная упаковка Debian] Почему форк ROCm LLVM все еще нужен? · Проблема № 2449 · ROCm-Developer-Tools/HIP» . Гитхаб .
- ^ «Аомп-В 14,0-1» . Гитхаб . 22 января 2022 г.
- ^ «Инфраструктура компилятора LLVM» . Гитхаб . 10 января 2022 г.
- ^ «Справочное руководство для программиста среды выполнения HSA» (PDF) . Фонд HSA. 2 мая 2018 г. Проверено 1 августа 2023 г.
- ^ «Реестр Khronos OpenCL — The Khronos Group Inc» . www.khronos.org .
- ^ «Список продуктов, совместимых с OpenCL — The Khronos Group Inc» . www.khronos.org . 3 февраля 2022 г.
- ^ «Рисунок 3. Иллюстрация процесса компиляции HIPCC. Компилятор clang» .
- ^ «AMD публикует «GPUFORT» с открытым исходным кодом как новейшую попытку помочь в переходе от CUDA» .
- ^ Майя, Хулио; Чалмерс, Ноэль; Т. Бауман, Пол; Кертис, Николас; Малая, Николай; Макдугалл, Дэймон; ван Оострум, Рене; Вулф, Ной (май 2021 г.). Инструменты поддержки и профилирования библиотеки ROCm (PDF) . АМД.
- ^ «Эксклюзив: за заговором с целью ослабить контроль Nvidia над искусственным интеллектом, нацелившись на программное обеспечение» . Рейтер . Проверено 5 апреля 2024 г.
Внешние ссылки [ править ]
- «Официальная документация РПЦм» . АМД . 10 февраля 2022 г.
- «Учебный центр РОКм» . АМД . 25 января 2022 г.
- «Официальная документация ROCm по суперпроекту github» . АМД . 25 января 2022 г.
- «Официальная документация ROCm — до 5.0» . АМД . 19 января 2022 г.
- «Приложения с ускорением графического процессора с помощью ускорителей AMD Instinct и программного обеспечения AMD ROCm» (PDF) . АМД . 25 января 2022 г.
- «AMD Инфинити Хаб» . АМД . 25 января 2022 г. — Docker-контейнеры для научных приложений.