CPU device drivers¶
‘cpu’ driver¶
This is the default CPU driver, using the pthread library for multithreaded execution. This driver is the most mature and passes almost entirely the conformance test suite. Building of this driver is enabled by default, but can be disabled by -DENABLE_HOST_CPU_DEVICES=0.
‘cpu-minimal’ driver¶
A minimalistic example CPU device driver for executing kernels on the host CPU. Does not support multithreading.
‘cpu-tbb’ driver¶
This driver uses the Intel Threading Building Blocks (currently named oneTBB) open source library for work-group and kernel-level task scheduling.
The scheduling characteristics can be fine tuned with environment variables (see below) to achieve a higher performance.
Building PoCL with TBB¶
1) Install prerequisites¶
The Intel Threading Building Blocks library must be available on your system.
The location of TBBConfig.cmake
(shipped with TBB since TBB 2017 U7) is
available via TBB_DIR
or CMAKE_PREFIX_PATH
contains path to TBB root.
2) Build PoCL¶
To enable the TBB device, add -DENABLE_TBB_DEVICE=1
to your CMake
configuration command line.
If CMake has trouble locating the TBB library, try specifying the to path to
TBBConfig.cmake
by passing -DTBB_DIR=<path-to-TBBConfig.cmake>
to CMake.
Examples:
-DTBB_DIR=/home/username/intel/tbb_2021/lib/cmake/tbb
-DTBB_DIR=/home/username/intel/tbb_2020/cmake
3) Configuration¶
When building the tbb device, it will be set as the default device for PoCL instead of pthread driver. It is strongly recommended to NOT create more TBB devices as the TBB device always uses all cores and has no subdevice support.
The TBB driver can be tuned with at runtime with environment variables, see Tuning pocl behavior with ENV variables.