Релиз на 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 архитектура и NVIDIA GPU (чрез 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_ballot.
  • Подобрена е поддръжката на 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster