Release Notes for PoCL 5.0

New backend: Remote

PoCL now has a new backend (called ‘remote’) for offloading OpenCL commands across a network to one or more servers that are running the ‘pocld’ daemon shipped with PoCL. See the announcement and the documentation for more details.

Driver-specific features

CUDA driver: More OpenCL 3.0 features and extensions implemented

CUDA driver received new features to support more optional OpenCL 3.0 features and various extensions that are needed to (better) run chipStar:

  • Coarse-grain and fine-grain SVM, if supported by the CUDA device

  • Program scope variables

  • OpenCL 2.x/3.x atomics

  • Initial subgroup support: intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier, sub_group_ballot

  • Enable FP16 & generic address space support with SPIR-V input

  • cl_ext_float_atomics (on FP32 + FP64) when using LLVM 17

RISC-V CPU support improved

In this release we improved support for RISC-V CPUs. We tested PoCL on a Starfive VisionFive 2 using a Ubuntu 23.10 preinstalled image. With LLVM 17 and GCC 13.2, 98% tests pass (only 4 tests fail out of 253).

Other CPU improvements

There were also many other CPU driver improvements, this time mostly driven by chipStar’s needs:

  • cl_ext_float_atomics has been implemented with support for FP32 and FP64

  • cl_khr_command_buffer implementation has been updated to 0.9.4

Experimental built-in-kernel library based FPGA backend

AlmaIF backend added a DBDevice backend, which can be used to transparently reconfigure FPGAs from different vendors using a database of bitstreams. This work is from an in-progress research work and can be considered as a preview. The database with the bitstreams is generated by AFOCL project. For more information of the research project, see the publication “AFOCL: Portable OpenCL Programming of FPGAs via Automated Built-in Kernel Management” (NorCAS 2023)

Deprecation/feature removal notices

There are some features we plan to deprecate or remove to clean up the codebase a bit.

LLVM: old versions cleanup

Support for LLVM versions 10 to 13 inclusive is deprecated and will be removed in next PoCL release.

The old SPIR support will be removed

CPU drivers currently report cl_khr_spir for SPIR 1.x/2.0 support, but the support has never been finished nor tested properly and is likely completely unused. Thus, we believe it’s time to remove the partial implementation in the next release to clean up the code base. SPIR-V remains the supported and recommended intermediate language input option.