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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.