Initially developed by Apple and implemented by Intel, AMD, Nvidia, ARM and IBM to name a few, OpenCL is an industry standard managed and maintained by the Khronos Group. It is the first open, royalty-free, unified programming model for accelerating algorithms on heterogeneous systems.
The single-core CPUs that were initially used for computation, were soon replaced with multiple-core CPUs for higher performance. Today, there is a shift to comparatively smaller multi-core systems. Their small size is achieved by placing a general-purpose graphical processing unit (GPU), digital signal processor (DSP) or field-programmable gate array (FPGA) chips next to a CPU. However, engineers face the challenge of accelerating their programs across all of these different types of hardware. To tackle this challenge, they are looking for a single open standard programming model to bridge the hardware gap—and OpenCL could be the answer.
What is OpenCL?
For a software engineer OpenCL is a programming model, whereas for a system architect it is a methodology. OpenCL allows the use of a ‘C’-based language for developing code across different platforms including CPUs, GPUs, DSPs and FPGAs. By utilising the standard ‘C’ language (C99) and OpenCL C (standard ‘C’ with some extensions), it can provide the solution for a single unified design flow in a different manner by using the open standard extension of ‘C’ language.
Combining the OpenCL programming model with FPGA architecture provides a powerful solution for system acceleration. OpenCL is a standard multi-core programming model that can be used to provide a higher-level layer of abstraction for FPGAs.