Portable Computing Language (pocl) aims to become an efficient implementation of the OpenCL standard. In addition to producing an easily-portable Open Source implementation, another major goal of the project is improving performance portability of OpenCL programs with compiler optimizations, reducing the need for target-dependent manual optimizations. At the core of pocl is a set of LLVM passes used to statically parallelize multiple work items with the kernel compiler, even in the presence of work group barriers. This enables parallelization of the fine-grained static concurrency in the work groups in multiple ways (SIMD, VLIW, superscalar, etc.). The code base is modularized to allow easy adding of new "device drivers" in the host-device layer. A generic multithreaded "target driver" is included. It allows running OpenCL applications on a host which supports the pthread library with multithreading at the work group granularity.
|Tags||OpenCL LLVM Parallel Computing|
|Operating Systems||Linux MeeGo Mac OS X|
|Implementation||C C++ shell script|
Release Notes: This release adds support for LLVM/Clang 3.3, employs inner loop parallelization in the kernel compiler, uses Vecmathlib for inlineable efficient math library implementations, contains plenty of bugfixes, and provides several new OpenCL API implementations.
Release Notes: This release adds support for LLVM 3.2, generates the work group functions using simple (parallel) loop structures, and adds fixes to make the pocl work on ppc32, ppc64, and armv7. Initial Cell SPU support has also been added (very experimental!) as an example of an heterogeneous pocl device driver.
Release Notes: Even though the OpenCL 1.2 standard is not yet implemented fully and contains known bugs, pocl is now considered ready for wider testing. It compiles and runs successfully most of the Rodinia benchmark, all of the ViennaCL test cases, and most of the OpenCL Programming Guide samples.