Публикувано е издание на проекта 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
