HPVM, компилятор LLVM для процессоров, графических процессоров, ПЛИС и аппаратных ускорителей.

Недавно проект LLVM объявила о выпуске новая версия компилятора ХПВМ 2.0 (гетерогенная параллельная виртуальная машина), целью которого является упрощение программирования для систем и предоставить инструменты для генерации кода для конкретных ЦП, графических процессоров, ПЛИС и аппаратных ускорителей.

Программирование гетерогенных параллельных систем осложняется наличием в системе компонентов, использующих разные модели для достижения параллелизма (ядра ЦП, векторные инструкции, графические процессоры и т. д.), разные наборы инструкций и различную иерархию памяти. Каждая система использует свою комбинацию этих компонентов.

Основная идея проекта HPVM заключается в использовании унифицированного представления параллельных исполняемых программ при компиляции, которые можно использовать для различных типов аппаратных средств, поддерживающих параллельные вычисления, включая графические процессоры, векторные инструкции, многоядерные процессоры, ПЛИС и различные специализированные чипы-ускорители.

В отличие от других систем, HPVM попытался объединить три возможности для организации гетерогенных вычислений: промежуточное представление (IR), архитектура виртуального набора команд (V-ISA) и программирование во время выполнения, независимо от языка программирования и аппаратного обеспечения.

Промежуточное представление HPVM расширяет промежуточное представление инструкций LLVM с помощью иерархического графа потока данных для захвата параллелизма на уровне задач, данных и вычислительных конвейеров. Промежуточное представление HPVM также включает векторные инструкции и разделяемую память. Основной целью использования промежуточного представления является эффективная генерация кода и оптимизация для гетерогенных систем.

Виртуальная архитектура набора инструкций (V-ISA) абстрагирует низкоуровневое оборудование и объединяет различные формы параллелизма и архитектуры памяти, используя только базовую модель параллелизма — граф потока данных.

V-ISA обеспечивает переносимость между разными типами оборудования для параллельных вычислений и дает возможность не терять производительность при использовании разных элементов разнородных систем. Виртуальную ISA также можно использовать для доставки универсального исполняемого кода программы, который можно запускать на процессорах, графических процессорах, ПЛИС и различных ускорителях.

Политики гибкого планирования вычислений применяются во время выполнения и реализуются на основе информации о программе (графической структуре) и путем компиляции отдельных программных узлов для выполнения на любом из доступных целевых вычислительных устройств в системе.

Генераторы кода, разработанные в рамках проекта, способны переводить узлы приложений, определенные виртуальной ISA, для работы на графических процессорах NVIDIA (cuDNN и OpenCL), векторных инструкциях Intel AVX, FPGA и многоядерных процессорах x86. Отмечается, что производительность вывода трансляторов HPVM сравнима с написанным от руки кодом OpenCL для устройств GPU и векторных вычислений.

Основные новые функции HPVM 2.0

Со стороны из новинок, которые представлены В новой версии выделяются:

  • Предлагается интерфейс языка Hetero-C++, упрощающий распараллеливание кода приложения на языках C/C++ для компиляции в HPVM. Hetero-C++ определяет расширения для параллелизма на уровне данных и иерархических задач, которые сопоставляются с графами потоков HPVM.
  • Был добавлен серверный модуль FPGA для поддержки выполнения кода на Intel FPGA. Для организации выполнения используется Intel FPGA SDK для OpenCL.
  • Добавлена ​​структура DSE (Design Space Exploration), которая включает оптимизацию компилятора и механизмы обнаружения узких мест для автоматической настройки приложений для данной аппаратной платформы.
  • Платформа содержит готовую модель производительности для Intel FPGA и позволяет подключать собственные процессоры для оптимизации любого устройства с поддержкой HPVM.
  • Оптимизации можно применять как на уровне графа потока данных HPVM, так и на уровне LLVM.
  • Обновлены компоненты LLVM до версии 13.0.
  • Код был реорганизован, чтобы упростить навигацию по кодовой базе, библиотекам и утилитам.
  • Улучшена инфраструктура для тестирования, добавлены новые тесты для различных компонентов HPVM.

Наконец, Если вы хотите узнать больше о HPVM, вы можете проверить детали в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.