Недавно проект 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, вы можете проверить детали в по следующей ссылке.
Будьте первым, чтобы комментировать