Реліз PoCL 5.0 із незалежною реалізацією стандарту OpenCL

Опубліковано реліз проекту PoCL 5.0 (Portable Computing Language OpenCL), що розвиває реалізацію стандарту OpenCL, незалежну від виробників графічних прискорювачів та дозволяє використовувати різні бекенди для виконання OpenCL-ядер на різних типах графічних та центральних процесорів. Код проекту розповсюджується під ліцензією MIT. Підтримується робота на платформах X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU та різних спеціалізованих ASIP (Application-Specific Instruction-set Processor) та TTA-процесорах (Transport Triggered Architecture) з архітектурою VLIW.

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

В новой версії:

  • Реалізовано новий бекенд "Remote", призначений для організації розподілених обчислень через винесення обробки команд OpenCL на інші хости в мережі, на яких запущено фоновий процес pocld.
  • У драйвері CUDA реалізовані додаткові можливості та розширення OpenCL 3.0, такі як атомарні операції, змінні з обмеженою областю видимості, підгрупи intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier та sub_group_ball.
  • Поліпшено підтримку CPU на базі архітектури RISC-V. Робота PoCL протестована на платі Starfive VisionFive 2 із завантаженим оточенням Ubuntu 23.10 із LLVM 17 та GCC 13.2.
  • Реалізовано розширення cl_ext_float_atomics з підтримкою FP32 та FP64.
  • Реалізацію розширення cl_khr_command_buffer оновлено до версії 0.9.4.
  • Запропоновано експериментальний бекенд AlmaIF для FPGA.
  • Видалено незавершену підтримку проміжного подання шейдерів SPIR 1.x/2.0. Як рекомендована проміжна мова шейдерів заявлений SPIR-V.
  • Додано підтримку Clang/LLVM 17.0. Оголошена застаріла підтримка Clang/LLVM 10-13.

Джерело: opennet.ru

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