PoCL 5.0 release with an independent implementation of the OpenCL standard

The release of the PoCL 5.0 project (Portable Computing Language OpenCL) has been published, developing an implementation of the OpenCL standard that is independent of graphics accelerator manufacturers and allows the use of various backends for executing OpenCL kernels on different types of graphics and central processors. The project code is distributed under the MIT license. Supports work on platforms X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU and various specialized ASIP (Application-Specific Instruction-set Processor) and TTA (Transport Triggered Architecture) processors with VLIW architecture.

The OpenCL core compiler implementation is based on LLVM, and Clang is used as a front-end for OpenCL C. To ensure proper portability and performance, the OpenCL kernel compiler can generate combined functions that can use various hardware resources to parallelize code execution, such as VLIW, superscalar, SIMD, SIMT, multicore, and multithreading. There is support for ICD drivers (Installable Client Driver). There are backends to support work through CPU, ASIP (TCE/TTA), GPU based on HSA architecture and NVIDIA GPU (via libcuda).

In the new version:

  • A new β€œRemote” backend has been implemented, designed to organize distributed computing by transferring the processing of OpenCL commands to other hosts on the network running the background pocld process.
  • The CUDA driver implements additional features and extensions of OpenCL 3.0, such as atomic operations, scoped variables, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier, and sub_group_ballot.
  • Improved support for CPUs based on the RISC-V architecture. PoCL operation was tested on the Starfive VisionFive 2 board loaded with Ubuntu 23.10 environment with LLVM 17 and GCC 13.2.
  • The cl_ext_float_atomics extension has been implemented with support for FP32 and FP64.
  • The implementation of the cl_khr_command_buffer extension has been updated to version 0.9.4.
  • An experimental AlmaIF backend for FPGAs has been proposed.
  • Removed incomplete support for intermediate representation of SPIR 1.x/2.0 shaders. SPIR-V is declared as the recommended intermediate shader language.
  • Added support for Clang/LLVM 17.0. Support for Clang/LLVM 10-13 has been deprecated.

Source: opennet.ru

Add a comment