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.
2. A programming model is needed that allows the designer to think about the FPGA as a configurable multi-core device.
3. Today, the FPGA’s programming model revolves around RTL (VHDL/Verilog)—state machines, datapaths, arbitration, buffering, etc.
4. It is more difficult to develop an OpenCL program for an FPGA than more natural hardware platforms such as CPUs and GPUs.
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.