Get started with custom lists to organize and share courses.

Sign up

Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Heterogeneous Parallel Programming

University of Illinois at Urbana-Champaign via Coursera

9 Reviews 329 students interested

Taken this course? Share your experience with other students. Write review

Overview

Sign up to Coursera courses for free Learn how

All computing systems, from mobile to supercomputers, are becoming heterogeneous, massively parallel computers for higher power efficiency and computation throughput. While the computing community is racing to build tools and libraries to ease the use of these systems, effective and confident use of these systems will always require knowledge about low-level programming in these systems. This course is designed for students to learn the essence of low-level programming interfaces and how to use these interfaces to achieve application goals. CUDA C, with its good balance between user control and verboseness, will serve as the teaching vehicle for the first half of the course. Students will then extend their learning into closely related programming interfaces such as OpenCL, OpenACC, and C++AMP.


The course is unique in that it is application oriented and only introduces the necessary underlying computer science and computer engineering knowledge for understanding. It covers the concept of data parallel execution models, memory models for managing locality, tiling techniques for reducing bandwidth consumption, parallel algorithm patterns, overlapping computation with communication, and a variety of heterogeneous parallel programming interfaces. The concepts learned in this course form a strong foundation for learning other types of parallel programming systems.


Syllabus

  • Week One: Introduction to Heterogeneous Computing, Overview of CUDA C, and Kernel-Based Parallel Programming, with lab tour and programming assignment of vector addition in CUDA C.
  •  Week Two: Memory Model for Locality, Tiling for Conserving Memory Bandwidth, Handling Boundary Conditions, and Performance Considerations, with programming assignment of simple matrix-matrix multiplication in CUDA C.
  • Week Three: Parallel Convolution Pattern, with programming assignment of tiled matrix-matrix multiplication in CUDA C.
  • Week Four: Parallel Scan Pattern, with programming assignment of parallel convolution in CUDA C.
  • Week Five: Parallel Histogram Pattern and Atomic Operations, with programming assignment of parallel scan in CUDA C.
  • Week Six: Data Transfer and Task Parallelism, with programming assignment of parallel histogram in CUDA C.
  • Week Seven: Introduction to OpenCL, Introduction to C++AMP, Introduction to OpenACC, with programming assignment of vector addition using streams in CUDA C.
  • Week Eight: Course Summary, Other Related Programming Models –Thrust, Bolt, and CUDA FORTRAN, with programming assignment of simple matrix-matrix multiplication in choice of OpenCL, C++AMP, or OpenACC.
  • Week Nine: complete any remaining lab assignments, with optional, bonus programming assignments in choice of OpenCL, C++AMP, or OpenACC.

Taught by

Wen-mei W. Hwu

Tags

Help Center

Most commonly asked questions about Coursera Coursera

Reviews for Coursera's Heterogeneous Parallel Programming
4.3 Based on 9 reviews

  • 5 stars 56%
  • 4 stars 22%
  • 3 stars 22%
  • 2 star 0%
  • 1 star 0%

Did you take this course? Share your experience with other students.

Write a review
  • 1
Anonymous
3.0 4 years ago
Anonymous completed this course.
Great material. Online assignment system has numerous problems and breaks down often. Peer review is meaningless since correct answers arent given nor is there an easy way to run others' code.
2 people found
this review helpful
Was this review helpful to you? Yes
Kristina Š
4.0 2 months ago
by Kristina completed this course and found the course difficulty to be hard.
I've enjoyed this course, and the programming assignments were fun (on a separate platform though, so this complicated things a bit). Caveat: this is far away from an introductory course, and there's a lot of Googleing forthcoming if you're a newbie like me, since it's easy to get lost.

Was this review helpful to you? Yes
Johan R
5.0 3 years ago
by Johan completed this course, spending 8 hours a week on it and found the course difficulty to be medium.
A bit hard at times. Quite good introduction to using gpu / stream processors for solving simple problems (in this course).
Was this review helpful to you? Yes
Rey C
3.0 4 years ago
by Rey completed this course.
0 person found
this review helpful
Was this review helpful to you? Yes
Davide M
5.0 3 years ago
by Davide completed this course.
Was this review helpful to you? Yes
Bruno L
5.0 3 years ago
by Bruno completed this course.
Was this review helpful to you? Yes
Mariusz B
4.0 4 years ago
by Mariusz completed this course, spending 8 hours a week on it and found the course difficulty to be hard.
Was this review helpful to you? Yes
Mark B
5.0 3 years ago
by Mark completed this course.
Was this review helpful to you? Yes
  • 1

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free

Never stop learning Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.