The release of the PoCL 6.0 project (Portable Computing Language OpenCL) has been published, advancing the implementation of the OpenCL standard, independent of graphics accelerator manufacturers and allowing the use of various backends for executing OpenCL kernels on different types of graphics and central processors. The project's code is distributed under the MIT license. It supports operation on X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU, and various specialized ASIP (Application-Specific Instruction-set Processor) and TTA processors (Transport Triggered Architecture) with VLIW architecture.
The implementation of the OpenCL kernel compiler is based on LLVM, and Clang is used as the frontend for OpenCL C. To ensure proper portability and performance, the OpenCL kernel compiler can generate combined functions that can utilize various hardware resources for parallel execution of code, such as VLIW, superscalar execution, SIMD, SIMT, multicore, and multithreading. ICD drivers are supported.
(Installable Client Driver). Backends are available to ensure operation through CPU, ASIP (TCE/TTA), HSA architecture-based GPUs, and NVIDIA GPUs (via libcuda).
In the new version:
- Support for Clang/LLVM 18.0 has been added, while support for LLVM 10, 11, 12, and 13 has been discontinued.
- A new cpu-tbb backend has been implemented, utilizing the OneTBB library developed by Intel for parallelizing operations and scheduling task execution.
- In the CPU backend, which ensures the execution of OpenCL kernels on the CPU, support for the OpenMP parallel programming standard has been added, along with the method clGetDeviceAndHostTimer(), and experimental extensions cl_pocl_svm_rect, cl_pocl_command_buffer_svm, and cl_pocl_command_buffer_host_buffer have been implemented.
- In the 'Remote' backend, designed for organizing distributed computing by offloading OpenCL command processing to other hosts in the network running the background process pocld, support for CG SVM (Coarse-Grain Shared Virtual Memory) has been added, enabling backend access using the Vsock communication protocol, and support for compiling and linking programs using the clCompileProgram() and clLinkProgram() functions.
- In the LevelZero backend, utilizing the Level Zero API, it is now allowed to create buffers larger than 4GB, and optimizations for synchronization processes have been implemented.
- In the CUDA backend, operations sub_group_shuffle and sub_group_shuffle_xor have been implemented, and the limit CL_DEVICE_MAX_MEM_ALLOC_SIZE has been increased.
Source: opennet.ru
