Intro to Parallel Programming

This course is offered through Udacity — you can add it to your Accredible profile to organize your learning, find others learning the same thing and to showcase evidence of your learning on your CV with Accredible's export features.


Course Date: Anytime (self-paced)

Price: free

Course Summary

Learn the fundamentals of parallel computing with the GPU and the CUDA programming environment by coding a series of image processing algorithms. #filters, #cuda.

Course Instructors

David Luebke

David Luebke helped found NVIDIA Research in 2006 after eight years teaching computer science on the faculty of the University of Virginia. Dave's research on real-time 3D computer graphics led to an early interest in GPU computing when that field was still in its infancy. Today Dave is senior director of graphics research and a NVIDIA Distinguished Inventor. Dave lives in central Virginia with his wife and three boys, plays racquetball and ultimate frisbee, and prefers college hoops to the NBA. Find him at his website and @davedotluebke on Twitter.

John Owens

John Owens is an associate professor of electrical and computer engineering at the University of California, Davis, where he leads a research group in parallel computing. He joined the faculty at UC Davis after many happy years as a student at Stanford (graduate) and Berkeley (undergraduate), and lives in Berkeley with his wife and daughter. In his free time, he enjoys puzzles, water polo, and pursuing a finite Erdős-Bacon number. John has a web page and (after his recent sabbatical at Twitter) is learning how to tweet at @jowens.

Mike Roberts

Mike Roberts is a computer science PhD student at Stanford University. Before coming to Stanford, Mike spent two years doing GPU computing research at Harvard University, where he was involved in an exciting interdisciplinary project to construct a nanometer-scale wiring diagram of a mouse brain. Mike also collects rare funk 45s, and he used to DJ at a Motown night with his best friend every weekend. You can see what Mike is up to on his website.

Cheng-Han Lee

Cheng-Han worked as a program manager at Microsoft prior to Udacity, and he studied at the University of Texas at Austin and University of California at San Diego for his degrees in computer science.Outside of work, Cheng-Han is a world traveler. He has lived in Taiwan, Shanghai, Charleston (SC), Dallas, Austin, San Diego, Seattle, and now the Bay Area. In addition to traveling, he likes to find new parks to explore, new venues to visit, and new restaurants to try.

▸ ▾ David Luebke

David Luebke helped found NVIDIA Research in 2006 after eight years teaching computer science on the faculty of the University of Virginia. Dave's research on real-time 3D computer graphics led to an early interest in GPU computing when that field was still in its infancy. Today Dave is senior director of graphics research and a NVIDIA Distinguished Inventor. Dave lives in central Virginia with his wife and three boys, plays racquetball and ultimate frisbee, and prefers college hoops to the NBA. Find him at his website and @davedotluebke on Twitter.

▸ ▾ John Owens

John Owens is an associate professor of electrical and computer engineering at the University of California, Davis, where he leads a research group in parallel computing. He joined the faculty at UC Davis after many happy years as a student at Stanford (graduate) and Berkeley (undergraduate), and lives in Berkeley with his wife and daughter. In his free time, he enjoys puzzles, water polo, and pursuing a finite Erdős-Bacon number. John has a web page and (after his recent sabbatical at Twitter) is learning how to tweet at @jowens.

▸ ▾ Mike Roberts

Mike Roberts is a computer science PhD student at Stanford University. Before coming to Stanford, Mike spent two years doing GPU computing research at Harvard University, where he was involved in an exciting interdisciplinary project to construct a nanometer-scale wiring diagram of a mouse brain. Mike also collects rare funk 45s, and he used to DJ at a Motown night with his best friend every weekend. You can see what Mike is up to on his website.

▸ ▾ Cheng-Han Lee

Cheng-Han worked as a program manager at Microsoft prior to Udacity, and he studied at the University of Texas at Austin and University of California at San Diego for his degrees in computer science.Outside of work, Cheng-Han is a world traveler. He has lived in Taiwan, Shanghai, Charleston (SC), Dallas, Austin, San Diego, Seattle, and now the Bay Area. In addition to traveling, he likes to find new parks to explore, new venues to visit, and new restaurants to try.

Course Description

Learn the fundamentals of parallel computing with the GPU and the CUDA programming environment! In this class, you'll learn about parallel programming by coding a series of image processing algorithms, such as you might find in Photoshop or Instagram. You'll be able to program and run your assignments on high-end GPUs, even if you don't own one yourself.

Why It’s Important to Think Parallel

Third Pillar of Science
Learn how scientific discovery can be accelerated by combining theory and experimentation with computing to fight cancer, prevent heart attacks, and spur new advances in robotic surgery.

Why Take This Course?

You'll master the fundamentals of massively parallel computing by using CUDA C/C++ to program modern GPUs. You'll learn the GPU programming model and architecture, key algorithms and parallel programming patterns, and optimization techniques. Your assignments will illustrate these concepts through image processing applications, but this is a parallel computing course and what you learn will translate to any application domain. Most of all we hope you'll learn how to think in parallel.

Prerequisites and Requirements

We expect students to have a solid experience with the C programming language and basic knowledge of data structures and algorithms.

See the Technology Requirements for using Udacity

What Will I Learn?

Syllabus

Lesson 1: GPU Programming Model

Project 1: Greyscale Conversion (for that classy touch!)

Lesson 2: GPU Hardware and Parallel Communication

Project 2: Smart Blurring (miracle product for removing wrinkles!)

Lesson 3: Fundamental Parallel Algorithms

Project 3: HDR Tonemapping (when 1000:1 contrast is not enough!)

Lesson 4: Using Sort and Scan

Project 4: Red Eye Removal (soothing relief for bright red eyes)

Lesson 5: Optimizing GPU Programs

Project 5: Accelerating Histograms (when fast isn't fast enough)

Lesson 6: Parallel Computing Patterns

Project 6: Seamless Image Compositing (polar bear in the swimming pool)

Lesson 7: The Frontiers and Future of GPU Computing

Review course:

Please sign in to review this course.

Similar Courses


{{ course.name }} {{ course.name }}

{{ course.name}}

{{course.start_date | date:'MMM d'}} — {{ course.end_date | date:'MMM d'}}   ({{ course.time_until_course_starts }} ,   length: {{ course.length_in_weeks }} weeks) Self-paced — no deadlines    
${{ course.price }} p/mfree
TO-LEARN
TO-LEARN
ADDED!

REMOVE
FROM
LIST
ON PROFILE

Course Activity & Community

Be the first Accredible user to join this course!





uploaded {{ feed_item.model.caption || feed_item.model.url || feed_item.model.file_file_name }} for the course {{ feed_item.course.name }} — {{ feed_item.time_ago }}

{{ comment.user.name }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}

started the course {{ feed_item.course.name }} — {{ feed_item.time_ago }}
followed {{ feed_item.model.name }} — {{ feed_item.time_ago }}
followed thier friend {{ feed_item.model.name }} — {{ feed_item.time_ago }}
{{ feed_item.model.text }} (on the course {{ feed_item.course.name }}) — {{ feed_item.time_ago }}

{{ comment.user.name }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}