This seminar introduces OpenCL as a heterogeneous programming language. We will analyze the structure of an OpenCL program and how to handle the different elements of OpenCL. Examples of parallel computing are presented to illustrate how to write computing programs in OpenCL. Finally, we discuss how these concepts have to be translated into the FPGA context to achieve high performance.
The exercises expand the concepts with example programs. The examples help to understand the role of the host program to allocate memory, schedule tasks, and execute kernels in the OpenCL device. More advanced examples explain optimization decisions made due to hardware particularities.