Проект LLVM представив HPVM 1.0, компілятор для CPU, GPU, FPGA та прискорювачів

Розробники проекту LLVM опублікували випуск компілятора HPVM 1.0 (Heterogeneous Parallel Virtual Machine), націленого на спрощення програмування для гетерогенних систем і надає кошти для генерації коду для CPU, GPU, FPGA і предметно-орієнтованих апаратних прискорювачів (підтримка FGPA і у FGPA і у FGPA) ). Код проекту розповсюджується під ліцензією Apache 1.0.

Основна ідея HPVM у тому, щоб використовувати при компіляції уніфіковане подання паралельно виконуваних програм, яке може застосовуватися для виконання з використанням різних видів обладнання, що підтримує розпаралелювання обчислень, включаючи GPU, векторні інструкції, багатоядерні процесори, FPGA та різні спеціалізовані прискорювачі чіпи. На відміну від інших систем HPVM спробували поєднати три можливості для організації гетерогенних обчислень: незалежне від мови програмування та обладнання проміжне уявлення, віртуальну архітектуру набору команд (ISA) і планування під час виконання (runtime scheduling).

Проміжне уявлення (IR), що застосовується в HPVM незалежне від цільової системи, засноване на проміжному поданні інструкцій LLVM 9.0 і розширює його ієрархічним графом потоків даних, що дозволяє охоплювати паралелізм на рівні завдань, даних та обчислювальних конвеєрів. Проміжне представлення HPVM також включає векторні інструкції та пам'ять, що розділяється. Основною метою застосування проміжного подання є ефективна генерація коду та оптимізації для гетерогенних систем.

Віртуальна архітектура набору команд (ISA) дозволяє досягти переносимості між різними типами обладнання для паралельних обчислень і дає можливість не втрачати продуктивність при використанні різних елементів гетерогенних систем. Віртуальна ISA також може застосовуватися для постачання універсального коду програм, що виконується, який може запускатися із залученням CPU, GPU, FPGA і різних прискорювачів.

На поточному етапі розвитку HPVM запропоновані генератори коду, здатні транслювати вузли додатків, визначені за допомогою віртуальної ISA, для виконання з використанням GPU NVIDIA (cuDNN і OpenCL), векторних інструкцій Intel AVX і багатоядерних CPU x86. Під час виконання HPVM застосовує гнучкі політики планування обчислювального процесу, що реалізуються як на основі інформації про програму (структури графа), так і компілювання окремих вузлів програми для виконання на будь-якому з цільових обчислювальних пристроїв, доступних в системі.

Зазначається, що застосування HPVM дозволяє досягти суттєвого приросту продуктивності. Продуктивність результатів роботи трансляторів HPVM можна порівняти з написаним вручну кодом OpenCL для GPU та векторних обчислювальних пристроїв.

У порівнянні з першим попереднім випуском версія HPVM 1.0 включає підтримку тензорних операцій лінійної алгебри, фронтенди для Pytorch і Keras, апроксимації згорткових операторів і фреймворк для налаштування апроксимації, що автоматично вибирає оптимальні апроксимації для певних тензорних операцій і вибирає конфігурацію.

Джерело: opennet.ru

Додати коментар або відгук