PoCL is being developed towards an efficient implementation of the OpenCL standard which can be easily adapted for new targets.
This section contains instructions for building PoCL in its default configuration and a subset of driver backends. You can find the full build instructions including a list of available options in the install guide.
In order to build PoCL, you need the following support libraries and tools:
- Latest released version of LLVM & Clang
- development files for LLVM & Clang + their transitive dependencies
(e.g.
libclang-dev
,libclang-cpp-dev
,libllvm-dev
,zlib1g-dev
,libtinfo-dev
...) - CMake 3.9 or newer
- GNU make or ninja
- Optional: pkg-config
- Optional: hwloc v1.0 or newer (e.g.
libhwloc-dev
) - Optional (but enabled by default): python3 (for support of LLVM bitcode with SPIR target)
- Optional: llvm-spirv (version-compatible with LLVM) and spirv-tools (required for SPIR-V support in CPU / CUDA; Vulkan driver supports SPIR-V through clspv)
For more details, consult the install guide.
Building PoCL follows the usual CMake build steps. Note however, that PoCL can be used from the build directory (without installing it system-wide).
πΆ Tested in CI extensively, including OpenCL-CTS tests
π’ : Tested in CI
π‘ : Should work, but is untested
β : Unsupported
CPU device | LLVM 14 | LLVM 15 | LLVM 16 | LLVM 17 | LLVM 18 |
---|---|---|---|---|---|
x86-64 | π’ | π’ | π’ | πΆ | πΆ |
ARM64 | π‘ | π‘ | π‘ | π‘ | π’ |
i686 | π‘ | π‘ | π‘ | π‘ | π‘ |
ARM32 | π‘ | π‘ | π‘ | π‘ | π‘ |
RISC-V | π‘ | π‘ | π‘ | π‘ | π‘ |
PowerPC | π‘ | π‘ | π‘ | π‘ | π‘ |
GPU device | LLVM 17 | LLVM 18 |
---|---|---|
CUDA SM5.0 | π’ | π’ |
CUDA SM other than 5.0 | π‘ | π‘ |
Level Zero | π’ | π’ |
Vulkan | π’ | β |
Special device | LLVM 17 | LLVM 18 |
---|---|---|
OpenASIP | π’ | β |
Remote | π‘ | π’ |
Remote + RDMA | π‘ | π’ |
CPU device | LLVM 16 | LLVM 17 |
---|---|---|
Apple M1 | π’ | π’ |
CPU device | LLVM-MinGW 18 | LLVM-MinGW 19 |
---|---|---|
x86-64 | π‘ | π‘ |
PoCL with CPU device support can be found on many linux distribution managers. See
PoCL with CUDA driver support for Linux x86_64
, aarch64
and ppc64le
can be found on conda-forge distribution and can be installed with
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh # install mambaforge
To install pocl with cuda driver
mamba install pocl-cuda
To install all drivers
mamba install pocl
PoCL with CPU driver support Intel and Apple Silicon chips can be found on homebrew and can be installed with
brew install pocl
Note that this installs an ICD loader from KhronoGroup and the builtin OpenCL implementation will be invisible when your application is linked to this loader.
PoCL with CPU driver support Intel and Apple Silicon chips can be found on conda-forge distribution and can be installed with
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh
To install the CPU driver
mamba install pocl
Note that this installs an ICD loader from KhronoGroup and the builtin OpenCL implementation will be invisible when your application is linked to this loader. To make both pocl and the builtin OpenCL implementaiton visible, do
mamba install pocl ocl_icd_wrapper_apple
PoCL is distributed under the terms of the MIT license. Contributions are expected to be made with the same terms.