An Introduction to OpenCL Programming

Description: This course provides an introduction to the development of OpenCL programs for execution on GPUs from NVIDIA and AMD, as well as on multi-core CPUs. Topics covered in the lectures will include: motivation for many-core and heterogeneous architectures; an overview of GPU architectures; an introduction to relevant parallel programming models including data parallelism and SIMT multithreading; OpenCL kernels, work items and workgroups; efficient use of the memory hierarchy including coalescence; conditional code and divergence; parallel reductions; profiling program execution and optimising performance; common pitfalls; availability of libraries; future roadmaps for OpenCL; and resources for further study. The course will consist of lectures and hands-on practical sessions. We will use the C++ OpenCL API for this course for which some familiarity with C++ will be beneficial.

Aimed at: Anyone interested in writing OpenCL programs for GPUs and multi-core CPUs.

Prerequisites: Attendees should be competent in programming in C/C++ and be familiar with working in a UNIX environment (i.e., you should be able to connect to a machine remotely, use basic UNIX commands, edit a source file and understand the elementary steps in compiling object files and creating executables). No prior experience of parallel computing is required.

Duration: 2 days.

After Course Attendees Will: Be able to develop simple OpenCL programs, and further develop their skills by studying the OpenCL example codes provided by vendors including AMD, NVIDIA, Intel and IBM.

Registration: To register for HECToR courses go to the booking form.