Представен е релиз на проекта 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 архитектура и NVIDIA GPU (чрез 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
