PoCL is a portable open source (MIT-licensed) implementation of the 
OpenCL standard (1.2 with some 2.0 features supported). In addition 
to being an easily portable multi-device (truely heterogeneous) 
open-source OpenCL implementation, a major goal of this project is 
improving interoperability of diversity of OpenCL-capable devices by 
integrating them to a single centrally orchestrated platform. Also 
one of the key goals longer term is to enhance performance 
portability of OpenCL programs across device types utilizing runtime 
and compiler techniques.

Upstream PoCL currently supports various CPUs, NVIDIA GPUs via 
libcuda, HSA-supported GPUs and TCE ASIPs (experimental, see: 
OpenASIP). It is also known to have multiple (private) adaptations 
in active production use.

PoCL uses Clang as an OpenCL C frontend and LLVM for kernel compiler 
implementation, and as a portability layer. Thus, if your desired 
target has an LLVM backend, it should be able to get OpenCL support 
easily by using PoCL.

Examples source are installed at: /usr/share/pocl/examples

Optional: hwloc
