Introduction to Concurrent Programming with GPUs
Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Introduction to Concurrent Programming with GPUs
This course is part of GPU Programming Specialization
22,182 already enrolled
Included with
Learn more
Ask Coursera
Recommended experience
Recommended experience
What you'll learn
Students will learn how to develop concurrent software in Python and C/C++ programming languages.
Students will gain an introductory level of understanding of GPU hardware and software architectures.
Skills you'll gain
Tools you'll learn
Details to know
4 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- Learn new concepts from industry experts
- Gain a foundational understanding of a subject or tool
- Develop job-relevant skills with hands-on projects
- Earn a shareable career certificate
There are 5 modules in this course
This course will help prepare students for developing code that can process large amounts of data in parallel. It will focus on foundational aspects of concurrent programming, such as CPU/GPU architectures, multithreaded programming in C and Python, and an introduction to CUDA software/hardware.
The purpose of this foundational module is to prepare students for success within the GPU Programming Specialization. To this end, the module presents the course's overall goals and technical expectations and guides utilizing the Coursera lab environment. Students will conclude by completing an introductory C++ programming assignment to ensure they are equipped for the curriculum.
What's included
3 videos4 readings1 programming assignment2 discussion prompts1 ungraded lab
3 videosβ’Total 12 minutes
- GPU Programming Specialization Overviewβ’3 minutes
- Course Expectationsβ’3 minutes
- Coursera Lab Assignments Overviewβ’6 minutes
4 readingsβ’Total 80 minutes
- Course Overviewβ’10 minutes
- Course Outlineβ’10 minutes
- Introductory C++ Programming Resourcesβ’30 minutes
- VS Code and GitHub Resourcesβ’30 minutes
1 programming assignmentβ’Total 30 minutes
- Introductory C++ Programming Assignmentβ’30 minutes
2 discussion promptsβ’Total 30 minutes
- GPU Interest Discussionβ’15 minutes
- General Programming Experience Discussionβ’15 minutes
1 ungraded labβ’Total 30 minutes
- Introductory C++ Programming Lab Exerciseβ’30 minutes
In order to create software that process greater amounts of data at faster speeds, software operating systems, programming languages, and frameworks require strategies for accessing and modification of data in a manner that maximizes speed, while minimizing the possibility of data being in incorrect states. In this module, students will be presented canonical concurrency problems such as the Dining Philosophers. Additionally, they will learn how operating systems and programming languages handle these problems, and discuss real world big data concurrency applications.
What's included
6 videos3 readings2 programming assignments1 discussion prompt1 ungraded lab
6 videosβ’Total 35 minutes
- Real World Concurrent Programmingβ’4 minutes
- Concurrent Programming Pitfallsβ’7 minutes
- Concurrent Programming Problems and Algorithms Presentationβ’7 minutes
- Optional: Hungry Chickens Problemβ’4 minutes
- Concurrent Programming Patternsβ’6 minutes
- Serial Versus Parallel Code and Flynn's Taxonomyβ’7 minutes
3 readingsβ’Total 40 minutes
- Optional Concurrent Programming Problems and Algorithms Resourcesβ’15 minutes
- Optional Parallel Programming Resourcesβ’10 minutes
- Optional Serial Versus Parallel Programming Resourcesβ’15 minutes
2 programming assignmentsβ’Total 60 minutes
- Dining Philosophers Assignmentβ’30 minutes
- Sleeping Barber Problem Assignmentβ’30 minutes
1 discussion promptβ’Total 15 minutes
- Flynn's Taxonomy Discussionβ’15 minutes
1 ungraded labβ’Total 30 minutes
- Producer Consumer Laboratory Activityβ’30 minutes
Modern programming languages allow developers to create software with complex logic for manipulation of data in parallel, taking advantage of the multiple CPU cores in most computers. Students will develop simple software, written in the C++ and Python 3 programming languages, that process data sets concurrently.
What's included
6 videos2 readings2 assignments2 programming assignments1 discussion prompt2 ungraded labs
6 videosβ’Total 31 minutes
- Python 3 Parallel Programming Syntax and Patterns Presentationβ’9 minutes
- Python 3 Laboratory Project Structureβ’6 minutes
- Python 3 Assignment Project Structureβ’3 minutes
- C++ Parallel Programming Syntax And Patternsβ’6 minutes
- C++ Laboratory Project Structureβ’6 minutes
- C++ Assignment Project Structureβ’2 minutes
2 readingsβ’Total 60 minutes
- Optional Python Parallel Programming Resourcesβ’30 minutes
- Optional C++ Parallel Programming Resourcesβ’30 minutes
2 assignmentsβ’Total 20 minutes
- Python 3 Parallel Programming Quizβ’10 minutes
- C++ Parallel Programming Quizβ’10 minutes
2 programming assignmentsβ’Total 120 minutes
- Python 3 Parallel Programming Assignmentβ’60 minutes
- C++ Parallel Programming Assignmentβ’60 minutes
1 discussion promptβ’Total 10 minutes
- Single Versus Multithreaded Programming Discussionβ’10 minutes
2 ungraded labsβ’Total 120 minutes
- Python 3 Parallel Programming Lab Activityβ’60 minutes
- C++ Parallel Programming Lab Activityβ’60 minutes
In order to write effective GPU-accelerated software, a developer must first understand the underlying hardware architecture and the software ecosystem that enables it. In this module, students will be presented with the key hardware architectures of NVidia GPUs. Additionally, they will learn about the CUDA software layers, the installation and compilation process, and the core differences between the Runtime and Driver APIs.
What's included
9 videos1 reading1 assignment2 programming assignments1 discussion prompt1 ungraded lab
9 videosβ’Total 36 minutes
- Integrated versus Dedicated GPUsβ’5 minutes
- GUI CLI Tools for Identifying Installed GPU Hardwareβ’3 minutes
- Nvidia GPU Architecturesβ’4 minutes
- CUDA Linux Installationβ’4 minutes
- CUDA Help Lab and Assignment Walkthroughβ’3 minutes
- CUDA Software Layersβ’4 minutes
- CUDA Code Compilationβ’3 minutes
- CUDA Runtime Driver APIsβ’3 minutes
- CUDA Driver and Runtime APIs Lab and Assignment Walkthroughβ’8 minutes
1 readingβ’Total 10 minutes
- Nvidia GTC Keynote Presentationβ’10 minutes
1 assignmentβ’Total 30 minutes
- Nvidia Software and Hardware Quizβ’30 minutes
2 programming assignmentsβ’Total 75 minutes
- NVCC Help Command Assignmentβ’15 minutes
- CUDA Software Layers and Compilationβ’60 minutes
1 discussion promptβ’Total 10 minutes
- GUI/UI Tools for Identifying Installed GPU Hardware Discussionβ’10 minutes
1 ungraded labβ’Total 30 minutes
- CUDA Compilation Labβ’30 minutes
The purpose of this module is to transition from theory to practice by introducing the fundamentals of GPU programming. Students will learn the essential CUDA software keywords and syntax required for writing device code. They will also be guided through best practices for structuring both simple and complex projects, applying these concepts in hands-on assignments within common development environments.
What's included
6 videos1 reading1 assignment2 programming assignments1 discussion prompt1 ungraded lab
6 videosβ’Total 28 minutes
- CUDA Compilation and Execution Syntaxβ’7 minutes
- CUDA Keywords Videoβ’3 minutes
- Simple CUDA Lab and Assignment Walkthroughβ’4 minutes
- CUDA IDE Programmingβ’4 minutes
- CUDA Project Structure and Best Practicesβ’7 minutes
- Complex CUDA Project Assignment Walkthroughβ’2 minutes
1 readingβ’Total 30 minutes
- Optional NVidia CUDA Programming Resourcesβ’30 minutes
1 assignmentβ’Total 10 minutes
- GPU Programming Quizβ’10 minutes
2 programming assignmentsβ’Total 120 minutes
- Simple CUDA Project Assignmentβ’60 minutes
- Complex CUDA Project Assignmentβ’60 minutes
1 discussion promptβ’Total 10 minutes
- End of Course Discussionβ’10 minutes
1 ungraded labβ’Total 60 minutes
- Simple CUDA code Labβ’60 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructor
Offered by
Explore more from Software Development
- Status: Free TrialJ
Johns Hopkins University
Course
- Status: PreviewB
Birla Institute of Technology & Science, Pilani
Course
- Status: PreviewB
Birla Institute of Technology & Science, Pilani
Course
Course
Why people choose Coursera for their career
Frequently asked questions
Yes, but you will need to update code files to the labs and assignments. For modules 4 and 5 you will need to have an Nvidia GPU installed on your machine. The in-browser environment for labs and assignments is built to allow for all required programming.
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
More questions
Financial aid available,
