The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Опубликован HPVM 2.0, компилятор для CPU, GPU, FPGA и аппаратных ускорителей

23.04.2022 08:32

Проект LLVM представил выпуск компилятора HPVM 2.0 (Heterogeneous Parallel Virtual Machine), нацеленного на упрощение программирования для гетерогенных систем и предоставляющего средства для генерации кода для CPU, GPU, FPGA и предметно-ориентированных аппаратных ускорителей. Код проекта распространяется под лицензией Apache 2.0.

Программирование для гетерогенных параллельных систем усложнено из-за наличия в одной системе компонентов, использующих разные модели достижения параллелизма (ядра CPU, векторные инструкции, GPU и т.п.), разные наборы инструкций и разные иерархии памяти. В каждой системе используется своя комбинация подобных компонентов. Основная идея проекта HPVM в использовании при компиляции унифицированного представления параллельно выполняемых программ, которое может применяться для различных видов оборудования, поддерживающего распараллеливание вычислений, включая GPU, векторные инструкции, многоядерные процессоры, FPGA и различные специализированные чипы-ускорители.

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

  • Промежуточное представление HPVM расширяет промежуточное представление инструкций LLVM применением иерархического графа потоков данных, позволяющим охватывать параллелизм на уровне задач, данных и вычислительных конвейеров. Промежуточное представление HPVM также включает векторные инструкции и разделяемую память. Основной целью применения промежуточного представления является эффективная генерация кода и оптимизации для гетерогенных систем.
  • Виртуальная архитектура набора команд (V-ISA) абстрагирует низкоуровневые особенности оборудования и унифицирует различные формы параллелизма и архитектуры памяти, используя только базовую модель обеспечения параллелизма - граф потоков данных. V-ISA позволяет добиться переносимости между разными типами оборудования для параллельных вычислений и даёт возможность не терять производительность при использовании разных элементов гетерогенных систем. Виртуальная ISA также может применяться для поставки универсального исполняемого кода программ, который может запускаться с привлечением CPU, GPU, FPGA и различных ускорителей.
  • Гибкие политики планирования вычислительного процесса применяются во время выполнения и реализуются как на основе информации о программе (структуры графа), так и через компилирование отдельных узлов программы для выполнения на любом из целевых вычислительных устройств, доступных в системе.

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

Основные новшества HPVM 2.0:

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


  1. Главная ссылка к новости (https://discourse.llvm.org/t/a...)
  2. OpenNews: Инициатива по развитию открытых проектов для FPGA
  3. OpenNews: Опубликована спецификация гетерогенных вычислительных систем HSA 1.0
  4. OpenNews: Для ядра Linux развивается система распределённого выполнения потоков Popcorn
  5. OpenNews: Разработчики из Google предложили разработать свою libc для LLVM
  6. OpenNews: Первый стабильный релиз компоновщика Mold, развиваемого разработчиком LLVM lld
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57072-hpvm
Ключевые слова: hpvm, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, lockywolf (ok), 09:30, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Компиляции чего?
     
     
  • 2.11, Аноним (11), 13:07, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Компиляции чего?

    ответили в комментарии https://www.opennet.ru/openforum/vsluhforumID3/127325.html#9

     

  • 1.2, Аноним (2), 09:34, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Пример бы программы
     
     
  • 2.5, Аноним (5), 10:18, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://hpvm.readthedocs.io/en/latest/tutorials/1-heterocpp.html
     
     
  • 3.10, Шарп (ok), 12:36, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Уродский синтаксис. Есть же sycl, у которого программа остаётся в первозданном виде.
     
  • 3.14, Аноним (14), 15:59, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Бредятинка какая-то, писать надо больше, чем просто на Сях.
     
  • 3.20, Аноним (20), 13:56, 24/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > https://hpvm.readthedocs.io/en/latest/tutorials/1-heterocpp.html
    >используется код в стиле C и контейнеры в стиле C
    >C++ не используется, только типы и неймспейсы из него
    >Hetero-C++
    >C++
     
  • 2.8, Аноним (8), 10:38, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    https://www.tutorialspoint.com/cplusplus-hello-world-program
     

  • 1.3, Аноним (-), 09:44, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    >на языках C/C++

    Вендузятники так пишут. Позор.

    На языках Си и С++. Так надо писать.

     
     
  • 2.4, Аноним (4), 10:17, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Странно. Я тоже так пишу. Вантузятником я был с 2003 по 2007 годы. Значит до сих пор меня вантуз преследует?
     
     
  • 3.6, Аноним (5), 10:20, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    мальчик только встал на путь программирования, этап трушности
     
     
  • 4.7, vladimir (??), 10:21, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Крут!!! Но жирён :)
     
  • 3.19, Аноним (-), 10:06, 24/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Странно. Я тоже так пишу. Вантузятником я был с 2003 по 2007 годы.

    Если ты так пишешь, то ты до сих пор вантузник.

     

  • 1.9, Аноним (9), 11:37, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Виртуальная архитектура .. абстрагирует

    В одной фразе весь "современный" смузи-софт.

     
     
  • 2.13, Аноним (13), 15:38, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Один язык и компилер для cpu, gpu и amm? И неважно что и где исполняется?

    Результат ручной оптимизации под железо конечно будет лучше, чем автоматом.

    Но тут огромный выигрыш в трудоёмкости и проще квалификационные требования. И пусть результат не идеален.

    Так что может взлететь.

     
     
  • 3.15, Аноним (14), 16:01, 23/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может, надо прекратить подбрасывать кирпичи в воздух в надежде, что они улетят на юг, и начать строить из них дом?
     
     
  • 4.18, мастер кирпичей (?), 02:28, 24/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А в чем проблема?

    Я уже подбросил кучу кирпичей в воздух и все они улетели на юг.

    В чем собственно проблема, зачем строить дом, если кирпичи спокойно улетают на юг?

     

  • 1.12, Аноним (11), 13:08, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    может быть оно сможет компилировать код для vliw без тех проблем что возникали с обычным llvm
     
  • 1.16, Аноним (14), 16:02, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С таким подходом к программированию скоро для сложения двух чисел мало будет nvidia rtx...
     
  • 1.17, Mr. Sneer (?), 17:21, 23/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    HPVM...я сразу вспомнил HPVM на HP-UX 11.31...ностальгия))
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру