Прадстаўлены рэліз праекта PoCL 3.1 (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).
У новай версіі:
- Дададзена падтрымка Clang/LLVM 15.0.
- Значна палепшана падтрымка прамежкавага прадстаўлення шэйдараў SPIR-V для драйвераў, якія выкарыстоўваюць CPU і CUDA.
- Значна перапрацаваны драйвер для спецыялізаванага апаратнага забеспячэння (CL_DEVICE_TYPE_ACCELERATOR) і ўласных прылад (CL_DEVICE_TYPE_CUSTOM), якія не падтрымліваюць online-кампіляцыю. Драйверы accel і ttasim аб'яднаны ў новы драйвер AlmaIF.
- Працягнута праца над драйверам для графічнага API Vulkan.
- Прапанавана базавая рэалізацыя пашырэння cl_khr_command_buffer, які дазваляе запісаць паслядоўнасць каманд OpenCL для іх выканання адным выклікам.
Крыніца: opennet.ru