PoCL 3.1 release with an independent implementation of the OpenCL standard

The release of the PoCL 3.1 (Portable Computing Language OpenCL) project has been presented, which develops an implementation of the OpenCL standard that is independent of graphics accelerator manufacturers and allows using various backends to execute OpenCL cores on different types of graphics and central processors. The project code is distributed under the MIT license. Work is supported on platforms 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 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:

  • Added support for Clang/LLVM 15.0.
  • Significantly improved SPIR-V shader staging support for CPU and CUDA drivers.
  • Significantly redesigned driver for specialized hardware (CL_DEVICE_TYPE_ACCELERATOR) and custom devices (CL_DEVICE_TYPE_CUSTOM) that do not support online compilation. The accel and ttasim drivers are merged into the new AlmaIF driver.
  • Work continued on the driver for the Vulkan graphics API.
  • A basic implementation of the cl_khr_command_buffer extension is proposed, which allows writing a sequence of OpenCL commands for their execution by a single call.

Source: opennet.ru

Add a comment