Pocl is a portable open source (MIT-licensed) implementation of the OpenCL standard (1.2 with some 2.0 features supported). In addition to producing an easily portable open-source OpenCL implementation, another major goal of this project is improving performance portability of OpenCL programs with the kernel compiler and the task runtime, reducing the need for target-dependent manual optimizations.

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.

pocl currently has backends supporting many CPUs, ASIPs (TCE/TTA), NVIDIA GPUs (via CUDA), HSA-supported GPUs and multiple private off-tree targets.

In addition to providing an open source implementation of OpenCL for various platforms, an additional purpose of the project is to serve as a research platform for issues in parallel programming of heterogeneous platforms.


2018-03-09: Portable Computing Language (pocl) v1.1 released

2017-12-19: Portable Computing Language (pocl) v1.0 released

2017-04-25: NVIDIA GPU support via CUDA backend

pocl now has experimental support for NVIDIA GPU devices via a new backend which makes use of the LLVM NVPTX backend and the CUDA driver API. This work was primarily carried out by James Price from the High Performance Computing group at the University of Bristol. Read more about it here.

2017-04-10: Portable Computing Language (pocl) v0.14 released

2016-11-03: Hiring: Enthusiastic Open Source Developers

The original developers of pocl, the Customized Parallel Computing (CPC) group of Department of Pervasive Computing of Tampere University of Technology (Finland) is hiring software developers to work on pocl's OpenCL standard conformance.

2016-07-01: pocl in Texas Instruments' OpenCL SDK

Read here how TI benefits from the modular structure of pocl by being able to utilize the "de-SPMD" kernel compiler to produce efficient multi-WI work-group execution when running OpenCL kernels on their DSPs.

2016-05-23: HSA driver status update

In case you have been wondering what's the status of the pocl-hsa driver, here's a summary.

2016-04-04: Portable Computing Language (pocl) v0.13 released

2015-12-04: Added a master's thesis from Delft and a publication from Bristol

The master's thesis from TUDelft uses pocl for OpenCL support on a research platform. The Bristol's publication uses pocl in context of an OpenCL to FPGA flow.

If any of you have more publications or thesis about using or enhancing pocl somehow, please let us know.

2015-10-26: Portable Computing Language (pocl) v0.12 released

2015-03-12: Portable Computing Language (pocl) v0.11 released

2014-09-16: Added a 'publications' section with a couple of papers in it

2014-09-04: Portable Computing Language (pocl) v0.10 released

2014-07-24: pocl's Android port now at beta.

2014-01-29: Portable Computing Language (pocl) v0.9 released

2013-09-12: pocl included in Fedora

2013-08-12: Portable Computing Language (pocl) v0.8 released

2013-02-04: Project renamed to POrtable Computing Language (pocl)

The project was renamed to POrtable Computing Language (pocl) to avoid trademark uncertainties (was: Portable OpenCL). It's still pronounced "pogle"! :)

2013-01-09: 0.7 released!

The source package, the change log, and the release annoucement are here.

Current status

A lot of OpenCL programs, projects and test suites work out of the box, but there are still unimplemented OpenCL APIs. These will be added gradually as needed by new tested applications.

Patch contributions welcomed, of course!

The following OpenCL applications are known to work with pocl:

Feature highlights