PoCL 1.6, автономна реалізація стандарту OpenCL

Запуск нова версія проекту PoCL 1.6 (Портативна обчислювальна мова OpenCL), серед основних моментів версії 1.6 - підтримка Clang / LLVM 11.0, а також робота, зроблена для покращення продуктивності та функцій CUDA, покращення сумісності з PowerPC та покращення використання налагодження OpenCL.

Для тих, хто не знайомий з PoCL, ви повинні знати, що це таке портативна реалізація з відкритим кодом (ліцензовано MIT) стандарту OpenCL (1.2 із підтримкою деяких функцій 2.0). Як і реалізація OpenCL з декількома пристроями з відкритим кодом (справді неоднорідний) легко портативний, головна мета цього проекту - поліпшити взаємодію різноманітності пристроїв, сумісних з OpenCL, інтегруючи їх в єдину централізовано організовану платформу.

Окрім того, однією з ключових довгострокових цілей є покращення переносимості продуктивності програм OpenCL на типах пристроїв, що використовують середовища виконання та методи компіляції.

Компілятор ядра OpenCL базується на LLVM, а Clang використовується як інтерфейс для OpenCL C. Для забезпечення належної продуктивності та портативності компілятор ядра OpenCL може генерувати комбіновані функції, які можуть використовувати різні апаратні ресурси для паралельного виконання коду. , такі як VLIW, суперскалярна, SIMD, SIMT, багатоядерна та багатопотокова. Існує підтримка драйверів ICD (Installable Client Driver). Існують бекенди для забезпечення роботи через центральний процесор, ASIP (TCE / TTA), графічний процесор на основі архітектури HSA та графічний процесор NVIDIA (CUDA).

Основні нові можливості PoCL 1.6

Ця нова версія PoCL 1.6 підкреслює можливість компіляції цієї реалізації за допомогою драйверів пристроїв, увімкнених під час компіляції, а також наявність пристрою буде перевірятися під час запуску (раніше системи, на яких побудована та працює PoCL вони повинні мали однакову підтримку контролера). Реалізовано можливість використання диспетчера пакетів conda для розповсюдження двійкових пакетів PoCL із підтримкою CUDA для систем Linux-x86_64 та Linux-ppc64le.

Ще однією особливою зміною є підтримка LLVM 11 разом з розширеними можливостями налагодження коду OpenCL під час використання контролера ЦП.

Крім того, слід зазначити, що була проведена оптимізація продуктивності сервера CUDA, що суттєво впорядкувало операції, пов'язані з використанням локальної пам'яті (FFT, GEMM).

Тести, що використовують тести SHOC (які зараз постійно тестуються, показують, що ці оптимізації призвели до набагато кращої продуктивності, особливо для тестів, що включають локальну пам’ять, таких як ШПФ та GEMM, порівняно з кількістю PoCL зараз часто досягає конкурентних характеристик завдяки власному драйверу OpenCL від Nvidia). Ми вітаємо внески щодо виявлення та усунення першопричин інших проблемних областей. Ми також вітаємо внески в покращення охоплення функцій для стандартів OpenCL 1.2 / 3.0.

  • Продуктивність PoCL у багатьох тестах наближається до власного драйвера OpenCL від NVIDIA.
  • Додано параметр компіляції HARDENING_ENABLE, щоб увімкнути параметри компілятора для створення більш безпечного libpocl.so ціною погіршення продуктивності.
  • Повернута підтримка систем PowerPC 8/9, для яких рівень реалізації OpenCL при використанні пристроїв pthread та CUDA відповідає рівню CUDA в системах x86_64.
  • Змінено ABI для ядер CUDA, які використовують __ локальні блоки. Після оновлення користувачам потрібно очистити кеш pocl.
  • Видалена підтримка параметра збірки SINGLE_LLVM_LIB, замість використання STATIC_LLVM та llvm-config для визначення бібліотек, до яких потрібно прив’язувати.

Нарешті, якщо ви хочете дізнатись більше про цю нову версію, ви можете перевірити деталі в оригінальному оголошенні. 

Для тих, хто бажає дізнатись більше про це впровадження, вони можуть проконсультуватися офіційний веб-сайт звідси, де ви можете знайти документацію та завантажити файли.

Код проекту поширюється за ліцензією MIT, і робота підтримується на платформах X86_64, MIPS32, ARM v7, AMD HSA APU та різних спеціалізованих процесорах TTA з архітектурою VLIW.


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.