Educational institutions that offer courses in OpenCL programming to prepare developers for a changing marketplace

Heavy computational workloads have traditionally been processed on a CPU, but technology is shifting to a new computing paradigm that relies more on the GPU or an APU. OpenCL™ is the widely adopted industry standard for running parallel tasks on CPUs, APUs and GPUs using the same code. Check out some of the resources below.


Heterogeneous System Architecture, 1st Edition

hsa-bookHeterogeneous Systems Architecture, or HSA, is a new compute platform infrastructure that presents a next-generation hardware platform and associated software, and allows processors of different types to work efficiently and cooperatively in shared memory from a single source program. HSA also defines a virtual ISA for parallel routines or kernels, which is vendor and ISA independent thus enabling single source programs to execute across any HSA compliant heterogeneous processer from those used in smartphones to supercomputers.

The book, Heterogeneous System Architecture, is edited by Wen Mei Hwu.  Professor Hwu is the Sanders-AMD Endowed Chair in the Department of Electrical and Computer Engineering, University of Illinois at Urbana-Champaign.  The book begins with an overview of the evolution of heterogeneous parallel processing, associated problems, and how they are overcome with HSA. Later chapters provide a deeper perspective on topics such as the runtime, memory model, queuing, context switching, the architected queuing language, simulators, and tool chains. Finally, three real world examples are presented, which provide an early demonstration of how HSA can deliver significantly higher performance thru C++ based applications. Contributing authors are HSA Foundation members who are experts from both academia and industry. Some of these distinguished authors are listed here in alphabetical order: Yeh-Ching Chung, Benedict R. Gaster, Juan Gómez-Luna, Derek Hower, Lee Howes, Shih-Hao HungThomas B. Jablin, David Kaeli, Phil Rogers, Ben Sander, I-Jui (Ray) Sung.

Heterogeneous Computing with OpenCL™ 2.0

OpenCL2BookThe book, Heterogeneous Computing with OpenCL 2.0, 1st Edition, teaches OpenCL and parallel programming for complex systems that may include a variety of device architectures: multi-core CPUs, GPUs, and fully-integrated Accelerated Processing Units (APUs). This fully-revised edition includes the latest enhancements in OpenCL 2.0 including: Shared virtual memory to increase programming flexibility and reduce data transfers that consume resources; Dynamic parallelism which reduces processor load and avoids bottlenecks; Improved imaging support and integration with OpenGL

Designed to work on multiple platforms, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, this book explores memory spaces, optimization techniques, extensions, debugging and profiling. Multiple case studies and examples illustrate high-performance algorithms, distributing work across heterogeneous systems, embedded domain-specific languages, and will give you hands-on OpenCL experience to address a range of fundamental parallel algorithms.

For an earlier version of OpenCL, the book Heterogeneous Computing with OpenCL, 2nd Edition, Revised OpenCL 1.2 Edition, written by leaders in the parallel computing and OpenCL communities, will give you hands-on OpenCL 1.2 experience to address a range of fundamental parallel algorithms. The authors explore memory spaces, optimization techniques, graphics interoperability, extensions, and debugging and profiling. Intended to support a parallel programming course, Heterogeneous Computing with OpenCL includes detailed examples throughout, plus additional online exercises and other supporting materials.


OpenCL™ University Kits

OpenCL is the industry standard for cross-platform, parallel programming of modern processors, targeting devices across the mobile/embedded space to personal computers, servers, and even supercomputers. OpenCL applications are architecture- and vendor-neutral, important both to industry and academia where code reuse and platform independence drive research and innovation.

  • The OpenCL University Kit v2.0 contains materials for teaching OpenCL in a university setting. Developed in collaboration with the Northeastern University Computer Architecture Research lab, these slides may be used in their entirety as a series of lectures, or incorporated into an existing OpenCL™ or parallel-computing course. The University Kit is a companion for the Heterogeneous Computing with OpenCL 2.0 textbook, with the flow of materials corresponding to chapters in the textbook.

    The topics covered in these materials include the OpenCL™ host API and kernel language, OpenCL’s execution and memory models, modern GPU architecture, and kernel performance optimizations. Students need only basic knowledge of C/C++ programming to understand the materials. A C/C++ compiler and an OpenCL implementation (such as the AMD APP SDK) are needed to run the code samples.

    Lecture 1: Introduction to Parallel Computing
    Lecture 2: Introduction to OpenCL 2.0
    Lecture 3: GPU Architecture
    Lecture 4: Buffers and the Host Memory Model
    Lecture 5: Images and Pipes
    Lecture 6: GPU Threading Model
    Lecture 7: Optimizing Kernels
    Lecture 8: Events, Profiling, and Debugging

    Download the OpenCL University Kit 2.0 Kit

  • AMD presents the OpenCL University Kit v1.1 which includes support for OpenCL v1.2, a set of materials for teaching a full semester course in OpenCL programming. Each lecture includes instructor notes and speaker notes, plus code examples for lectures 2, 3, and 13. A sample application is provided for lecture 9.

    Students only need basic knowledge of C/C++ programming to understand the materials in this course, and those students with basic knowledge of OpenCL programming can start with Lecture 5. A C/C++ compiler and an OpenCL implementation (such as the AMD APP SDK) are needed to complete the exercises.

    Lecture 1: Introduction to Parallel Computing
    Lecture 2: Introduction to OpenCL
    Lecture 3: Introduction to OpenCL, continued
    Lecture 4: GPU Architecture
    Lecture 5: OpenCL Buffers and Complete Examples
    Lecture 6: Understanding GPU Memory
    Lecture 7: GPU Threads and Scheduling

    Lecture 8: Optimizing Performance
    Lecture 9: OpenCL Programming and Optimization Case Study
    Lecture 10: OpenCL Extensions
    Lecture 11: Events Timing and Profiling
    Lecture 12: Debugging
    Lecture 13: Programming Multiple Devices

    Download the OpenCL University Kit v1.1 (Zip, 10.22MB)


University Courses

OpenCL™ at Oregon State University

Oregon State University is taking its desktop parallel programming course online through its award-winning Ecampus program.

This course is targeted towards:

  • Computer Science students or recent graduates who want to see how to apply what they have been learning to the new multicore-based and GPU-based programming platforms.
  • Mid-career CS people who could use some extra knowledge and experience to boost their careers and/or want to know more about OpenCL™.
OpenCL at Oregon State University

Whether you are a game developer, an engineer, a chemist, a biologist, a physicist, etc., this is a great time to explore how to get more performance from the computers you probably already have.

It’s not a MOOC – you get actual college credit for it. (4 to be exact)

Learn more and sign up.