OpenCL

Course Length: Price:

Current Schedule:
4 days
Contact Us

This course is available ON DEMAND - please contact us about scheduling training.

To register for multiple courses, please go to the Complete Schedule

This comprehensive course covers the A-Z of OpenCL programming providing students with a solid understanding of GPU programing, debugging, optimization and profiling.

Learn how to write and optimize OpenCL applications that fully leverage the multi-core processing capabilities of the GPU. This comprehensive course covers the A-Z of OpenCL programming providing students with a solid understanding of GPU programing, debugging, optimization and profiling. Taught by Acceleware developers who bring real world experience to the class room, students will benefit from hands-on exercises and progressive lectures, individual laptops for student use and small class sizes to maximize learning.

Course Outline

Day One: Introduction to GPU Programming and GPU Architectures

  • Overview of GPU Computing
  • OpenCL Software
  • Data-Parallel Architectures and the OpenCL Programming Model
  • The OpenCL Memory Model & Work-item Cooperation
  • Hands-on-Exercises: Buffer Allocation and Buffer Transfers, Simple Kernels and Local and Constant Memory

Day Two: Advanced GPU Programming and Debugging

  • Task Concurrency and Synchronization
  • Images and Graphics Interoperability
  • Debugging GPU Programs and Numerical Accuracy
  • Hands-on-Exercises: Asynchronous Operations, Images and Graphics Interoperability and Debugging

Day Three: Introduction to Optimizations

  • Latency and the Execution Model
  • Arithmetic Optimizations
  • Memory Optimizations
  • Hands-on-Exercises: Arithmetic Optimizations and Correcting memory access pattern transfers and local memory bank conflicts

Day Four: Advanced Optimizations and Profiling

  • Profiling applications
  • Case Study 3D Convolution or Other Case Study
  • Multiple GPUs, Cluster of GPUs
  • Hands-on-Exercises: Using the Stream Profiler to optimize a kernel and 3D Convolution Putting it all together
  • Target audience:Programmers who are looking to develop comprehensive skills in writing and optimizing applications using C++ AMP

Prerequisites
To get the most out of the course we recommend that the attendees have a background in C/C++ and be familiar with the following concepts:

  • Pointers and pointer to pointers (*, **)
  • Taking the address of a variable (&)
  • Writing functions, for loops, if/else statements
  • Printing to standard output (printf, cout)
  • Memory allocation and deallocation
  • Arrays and indexing
  • Structures
  • General debugging