Рэліз PoCL 3.1 з незалежнай рэалізацыяй стандарту OpenCL

Прадстаўлены рэліз праекта 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

Дадаць каментар