The release of the project POCL 5.0 (Portable Computing Language OpenCl) has been published. The project is an implementation of the OpenCl standard that is independent of graphic accelerator manufacturers. It allows for the use of various backends to run OpenCL shaders on different types of graphic and central processors. The project code is available on GitHub under the MIT license. The platform supports X86_64, MIPS32, ARM V7, AMD HSA APU, NVIDIA GPU, and various specialized asip processors with vliw architecture.
The implementation of the OpenCL kernels is based on LLVM, with Clang used as the front-line for OpenCl C. The OpenCl compiler can generate combined functions to utilize hardware resources for parallel code execution, such as VLIW, supercularity, SIMD, SIMT, multi-stroke, and multi-plate, ensuring proper tolerance and performance. Additionally, support for ICD drivers (Installable Client Driver) is included. Backend support is provided for CPU, asip, HSA-based GPUs, and NVIDIA GPUs via libcuda.
In the new versions of POCL 5.0, the following features and improvements have been implemented:
- A new backend called “remote” has been added for organizing distributed calculations by offloading OpenCL commands to other hosts.
- The CUDA driver now includes additional capabilities and extensions from OpenCL 3.0, such as atomic operations and variables with limited visibility.
- CPU support based on RISC-V architecture has been improved. Testing has been conducted on the Starfive Visionfive 2 board with Ubuntu 23.10, LLVM 17, and GCC 13.2.
- Support for cl_float_atomics has been implemented for fp32 and FP64.
- The Cl_khr_command_buffer extension has been updated to version 0.9.4.
- An experimental backend called “almife” for FPGA has been added.
- Incomplete support for SPIR 1.X/