As taught in: July 12, 2010 @ SAAHPC’10, University of Tennessee Conference Center, Knoxville, Tennessee
AMD offered an introductory tutorial to OpenCL™ that was held alongside the 2010 Symposium on Application Accelerators in High Performance Computing (SAAHPC’10).
Benedict R. Gaster – OpenCL™ Architect, Products Group, AMD Inc.
Lee Howes – Research Engineer, Office of the CTO, AMD Inc.
» View Presentation [PDF 8.16MB]
If you are interested in using this course material, in whole or in part, for use in your own training class, please credit AMD where appropriate.
» Download source presentation [PPT 5.12MB]
OpenCL™ is a standard for programming heterogeneous computers built from CPUs, GPUs and other processors. It includes a framework to define the platform in terms of a host (e.g. a CPU) and one or more compute devices (e.g. a GPU) plus a C-based programming language for writing programs for the compute devices. Using OpenCL™, a programmer can write task-based and data-parallel programs that are targeted at HPC.
In this tutorial, we will introduce OpenCL™. This will be a “programmer’s introduction” where we cover the ideas behind OpenCL™ but also show how these ideas are translated into source code. We will do this through a series of progressively more challenging examples–thereby providing examples that experienced programmers will need to become productive OpenCL™ programmers.
The course syllabus is as follows:
- ATI Stream Computing
- Hardware Overview
- Software Ecosystem Overview
- Heterogeneous Computing and the Origins of OpenCL™
- OpenCL™ Overview
- Platform Model
- Execution Model
- Memory Model
- Programming Model
- Exploring the Spec with Code: Embarrassingly Parallel
- Vector Addition: The Basic Platform Layer
- Sorting: Kernel Programming Language
- Exploring the Spec with Code: Interacting Work-Items
- Optimizing Sort: Work-Groups and the Memory Model
- A Survey of the Rest of OpenCL™
- Runtime Layer, Event Model, C++ Wrapper API
- Simulating the Ocean
OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.