The purpose of this tutorial is to provide an introduction to OpenCL framework with extensions - Light-Weight Computing Language(LCL) Framework
The multiprocessor architecture is gaining popularity. Much research shows the promise of the multiprocessor architecture for high performance and saving energy. But, how to utilize the multiprocessor architecture considering performance and energy is still a challenging problem. Recently, OpenCL has been proposed to address this issue. OpenCL is an open standard for parallel programming that makes building parallel programs easy. Even though OpenCL provides portability to the parallel programs written in it, there still remain portability issues in terms of performance and energy. Light-weight Computing Language framework, called LCL framework is the OpenCL framework with extensions for mobile heterogeneous computing platforms. The LCL framework is based on the OpenCL language but is specialized to meet the unique needs of mobile heterogeneous computing systems. The framework is based on GPU Ocelot.
GPU Ocelot is an open-source low level compiler infrastructure for GPU compute applications targeting a range of GPU and non-GPU execution targets. Ocelot supports OpenCL applications and provides an implementation of the OpenCL API enabling seamless integration with existing OpenCL applications. Its JIT compiler supports four backend execution targets - (1) an emulator that implements NVIDIAs Parallel Thread Execution (PTX) instruction set architecture, (2) NVIDIA, (3) AMD GPUs, and (4) a translator to LLVM for efficient execution of GPU kernels on multicore CPUs.
In this tutorial, we provide overview of LCL fraemwork and GPU ocelot. We also provide i) the detailed internal architecture of LCL fraemwork and GPU ocelot, ii) extension of LCL from other OpenCL framework, and iii) how to utilize these extensions as programmer.