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.
Anyone interested in writing OpenCL programs for GPUs and multi-core CPUs.
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.
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.
Please email us if you would like to attend this course.