Новости
Новости
CUDA пересажена, а графический процессор на базе risc-v работает?
2022-03-17 459

RISC-V был одной из самых горячих тем в вычислительной технике, поскольку эта архитектура набора команд (ISA) допускает широкие возможности настройки и проста для понимания, в дополнение ко всем преимуществам открытого исходного кода и отсутствия лицензий. Существует даже проект по разработке графического процессора общего назначения на базе RISC-V ISA, а теперь мы наблюдаем портирование программной библиотеки CUDA от Nvidia на платформу Vortex RISC-V GPGPU.


CUDA (Computing Unified Device Architecture) от Nvidia представляет собой уникальную вычислительную платформу и интерфейс прикладного программирования (API), которые работают на линейке видеокарт Nvidia. Когда приложение пишется с поддержкой CUDA, как только система обнаруживает графический процессор на основе CUDA, она получает значительное ускорение кода с помощью графического процессора.


Сегодня исследователи исследовали способ включения поддержки программного инструментария CUDA в проекте RISC-V GPGPU под названием Vortex. GPGPU Vortex RISC-V предназначен для создания общесистемного графического процессора RISC-V на базе RV32IMF ISA. Это означает, что 32-битные ядра могут масштабироваться от 1-ядерных до 32-ядерных графических процессоров. Он поддерживает графический API OpenCL 1.2, а сегодня также поддерживает некоторые операции CUDA.


Исследователи поясняют: «...В этом проекте мы предлагаем и создаем конвейер для поддержки сквозной миграции CUDA: конвейер принимает исходный код CUDA в качестве входных данных и выполняет его на расширенной архитектуре графического процессора RISC-V. Конвейер состоит из нескольких этапов: трансляция исходного кода CUDA в NVVM IR, преобразование NVVM IR в SPIR-V IR, пересылка SPIR-V IR в POCL для получения двоичного файла RISC-V и, наконец, выполнение на расширенной двоичной файловой архитектуре графического процессора RISC-V. "



Процесс визуализируется на изображении выше, показывая все шаги, необходимые для его работы. Проще говоря, исходный код CUDA представлен в формате промежуточного представления (IR), называемом NVVM IR, на основе LLVM IR с открытым исходным кодом. Позже он был преобразован в стандартное переносимое промежуточное представление (SPIR-V) IR, которое затем было преобразовано в переносимую реализацию стандарта OpenCL с открытым исходным кодом, называемую POCL. Поскольку Vortex поддерживает OpenCL, он предоставляет поддерживаемый код и может без проблем его выполнять.


Для получения более подробной информации об этом сложном процессе нажмите ниже, чтобы прочитать оригинальную статью. Важно отметить, что вы должны поблагодарить этих исследователей за их усилия по обеспечению работы CUDA на графических процессорах RISC-V. Хотя на данный момент это лишь небольшой шаг, он может стать началом эры, когда RISC-V будет использоваться для ускорения вычислительных приложений, подобно сегодняшней линейке графических процессоров Nvidia.


Расширенное чтение: Может ли RISC-V изменить графический процессор?


Может ли RISC-V обрабатывать транзакции графического процессора? Эта работа еще находится в стадии разработки, и ее можно достичь путем создания небольшой, эффективной по площади конструкции с возможностью индивидуального программирования и масштабируемости.  
  Любой, кто изучал архитектуру графического процессора, знает, что это SIMD-конструкция векторного процессора. Это сверхэффективный параллельный процессор, который используется для всего: от запуска симуляций и отличных игр до обучения роботов созданию искусственного интеллекта и помощи умным людям манипулировать фондовым рынком. Пока я это пишу, он даже проверяет мою грамматику.  
  Но сфера графических процессоров стала частной сферой, и ее внутренняя работа выполняется IP и высокоэффективным поставки таких разработчиков, как AMD, Intel и Nvidia. Что если бы был новый набор графических инструкций, разработанный для 3D-графики и обработки медиа? Ну, может быть.  
  Новые инструкции создаются на основе базового векторного набора команд RISC-V. Они добавят поддержку новых типов данных, специфичных для графов, в качестве многоуровневых расширений в духе ядра RISC-V ISA. Поддерживает векторные, априорные математические операции, операции с пикселями и текстурами, а также операции с буфером Z/Frame. Это может быть объединенная ISA CPU-GPU. Группа библиотеки RISC 3D называет его RV64X (рис. 1), поскольку длина инструкций будет 64 бита (32 бита будет недостаточно для поддержки надежной ISA).  
 

Рисунок 1. Графический процессор RV64X включает в себя несколько DSP в дополнение к выделенным текстурным блокам и функциональным блокам.
 
  Группа заявила, что их мотивацией и целью было создание небольшого, эффективного проекта с возможностью индивидуального программирования и расширения. Он должен обеспечивать недорогое владение и развитие интеллектуальной собственности, а не конкурировать с коммерческими продуктами. Он может быть реализован на целевых устройствах FPGA и ASIC, является бесплатным и имеет открытый исходный код. Оригинальный дизайн ориентирован на микроконтроллеры с низким энергопотреблением, которые будут совместимы с Khronos Vulkan и поддерживают другие API (OpenGL, DirectX и т. д.).  
               

Графический процессор + RISC-V


Целевое оборудование будет иметь функциональный блок графического процессора и ядро ​​RISC-V. Эта комбинация представлена ​​в виде процессоров, в которых 64-битные инструкции кодируются как скалярные инструкции. Дело в том, что компилятор будет генерировать инструкции SIMD из скалярных кодов операций с префиксами. Другие функции включают изменяемые проблемы, бэкэнд SIMD на основе предикатов; отслеживание филиалов; точные исключения; и векторный интерфейс. Проекты будут включать 16-битную версию с фиксированной запятой и 32-битную версию с плавающей запятой. Первый подходит для реализации FPGA.  
  Команда заявила: «Нет необходимости использовать механизм вызовов RPC/IPC для отправки вызовов 3D API в неиспользуемое пространство памяти ЦП или неиспользуемое пространство памяти ЦП в пространство памяти графического процессора и наоборот».  
  Преимущество «слитого» подхода ISA CPU-GPU заключается в том, что в микрокоде можно использовать стандартные графические конвейеры и поддерживать собственные шейдеры. Может даже включать расширения трассировки лучей.  
  Дизайн будет в формате Vblock (от Libre GPU):  
 
  • Это что-то вроде VLIW (но не совсем).
  • Блокам инструкций предшествуют маркеры регистров, которые обеспечивают дополнительный контекст для скалярных инструкций внутри этого блока.
  • Субблоки включают в себя длину вектора, вращение, наложение вектора/ширины и прогнозирование.
  • Все это добавляется к скалярным опкодам!
  • Векторных опкодов нет (и они не нужны).
  • В векторном контексте это выглядит следующим образом: если скалярный код операции использует регистр, и этот регистр указан в векторном контексте, тогда будет активирован векторный режим.
  • Активация приводит к тому, что цикл for на аппаратном уровне выполняет несколько последовательных скалярных операций (вместо одной).
  • Разработчики могут свободно реализовывать циклы любым способом: SIMD, многозадачный, одноисполняемый; почти что угодно.

  Вектор RV32-V обрабатывает 8-битные, 16-битные или 32-битные векторные операции с числом от 2 до 4 элементов. Также будут специальные инструкции для общего конвейера рендеринга 3D-графики для 64-битных и 128-битных точек XYZW с фиксированной и плавающей запятой. 8-, 16-, 24- и 32-битные RGBA-пиксели; 8-битные, 16-битные тексели UVW на компонент; и настройки света и материала (Ia, ka, Id, kd, Is, ks и т. д.).  
  Вектор атрибутов представлен в виде матрицы 4×4. Система изначально поддерживает матрицы 2×2 и 3×3. Поддержка векторов также может подойти для численного моделирования с использованием 8-битных целочисленных типов данных, распространенных в приложениях искусственного интеллекта и машинного обучения.  
  В дизайн можно включить пользовательские растеризаторы, такие как сплайны, поверхности SubDiv и патчи. Этот метод также позволяет включать пользовательские этапы конвейера, пользовательские этапы геометрии/пикселей/кадрового буфера, пользовательские подразделители и пользовательские операции создания экземпляров.  
             

РВ64Х


Эталонная реализация RV64X включает в себя:
 
 
  • Кэш инструкций/данных SRAM (32 КБ)

  • Микрокод SRAM (8 КБ)

  • Декодер двухфункциональных инструкций (жесткий для RV32V и X; декодер микрокодированных инструкций для специальной ISA)

  • Четырехвекторный ALU (32-битный/ALU-фиксированный/с плавающей запятой)

  • 136-битный регистровый файл (1 тыс. элементов)

  • специальный функциональный блок

  • текстурный блок

  • Настраиваемый локальный фреймбуфер


  RV64X — это масштабируемая архитектура (рис. 2). Его метод объединения является новым, как и использование настраиваемых регистров для пользовательских типов данных. Пользовательский микрокод на основе SRAM можно использовать для реализации таких расширений, как пользовательские этапы растеризации, трассировка лучей, машинное зрение и машинное обучение. Один дизайн может быть применен к автономному графическому микроконтроллеру или многоядерному решению с масштабируемыми шейдерными блоками.  
 

Рисунок 2. RV64X может масштабироваться от простого бюджетного решения (слева) до многоядерного решения (справа).  
  Графические расширения RISC-V обеспечивают масштабируемость и многоязычие. Это позволяет использовать сценарии более высокого уровня, которые приводят к большему количеству инноваций.  
             

что дальше


Спецификация RV64X все еще находится на ранней стадии разработки и может быть изменена. Создается дискуссионный форум. Непосредственной целью является создание примера реализации с использованием симулятора набора команд. Откроется реализация пользовательского IP с использованием исходного IP и FPGA, разработанная как проекты с открытым исходным кодом.





Отказ от ответственности: Эта статья воспроизведена из «Обзора полупроводниковой промышленности». Эта статья представляет только личное мнение автора, а не мнение Sac Micro и отрасли, только для перепечатки и распространения. Поддержка. В целях защиты прав интеллектуальной собственности укажите первоисточник и автора для перепечатки. Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами, чтобы удалить их.

whatsapp

Горячая линия обслуживания

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950