We may earn an affiliate commission when you visit our partners.
Course image
Chancellor Thomas Pascale

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.

Enroll now

What's inside

Syllabus

Course Overview
The purpose of this module is for students to understand how the course will be run, topics, how they will be assessed, and expectations.
Read more
Core Principles of Parallel Programming on CPUs and GPUs
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.
Introduction to Parallel Programming with C and Python
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.
NVidia GPU Hardware/Software
The purpose of this module is for students to understand the basis in hardware and software that CUDA uses. This is required to appropriately develop software to optimally take advantage of GPU resources.
Introduction to GPU Programming
The purpose of this module is for students to understand the principles of developing CUDA-based software.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Relevant to an academic setting and builds a strong foundation for users to continue their study of computer science
Taught by Professor Chancellor Thomas Pascale, who is recognized for his work in computer science
Explores foundational aspects of concurrent programming, including CPU/GPU architectures, multithreaded programming, and CUDA software/hardware

Save this course

Save Introduction to Concurrent Programming with GPUs to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction to Concurrent Programming with GPUs with these activities:
Refresh Introduction to C++
Review your familiarity with the core concepts of the C++ programming language to ensure your knowledge is up-to-date
Browse courses on C++
Show steps
  • Review the basic syntax of C++
  • Practice writing simple C++ programs
  • Complete a few online tutorials on C++
Refresh Introduction to Python
Review your familiarity with the core concepts of the Python programming language to ensure your knowledge is up-to-date
Browse courses on Python
Show steps
  • Review the basic syntax of Python
  • Practice writing simple Python programs
  • Complete a few online tutorials on Python
Explore CUDA Software and Hardware
Seek out tutorials to expand your understanding of the underlying principles of CUDA software and hardware
Show steps
  • Search online for CUDA tutorials for beginners
  • Follow a few of these tutorials to learn about the basics of CUDA
  • Try implementing some of the examples provided in the tutorials
Three other activities
Expand to see all activities and additional details
Show all six activities
Practice Algorithm Implementations
Put your understanding of algorithms to the test by practicing their implementation
Browse courses on Algorithms
Show steps
  • Find a platform or website that offers coding challenges
  • Select a few problems to work on
  • Implement your solutions in the programming language of your choice
Practice Concurrent Programming Problems
Reinforce your understanding of concurrent programming by solving practice problems
Browse courses on Concurrency
Show steps
  • Find a platform or website that offers coding challenges specifically related to concurrent programming
  • Select a few problems to work on
  • Implement your solutions in the programming language of your choice
Develop a CUDA-Based Application
Put your skills to the test by creating a project that involves developing a CUDA-based parallel computing application
Show steps
  • Identify a problem or task that can benefit from parallelization using CUDA
  • Design and develop your solution using CUDA
  • Test and evaluate the performance of your application

Career center

Learners who complete Introduction to Concurrent Programming with GPUs will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers who are proficient in GPU programming can develop software applications that can run more efficiently and quickly by leveraging the parallel processing capabilities of GPUs. This course may be useful for Software Developers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Machine Learning Engineer
Machine Learning Engineers who are well-versed in GPU programming can develop more efficient and effective machine learning models by leveraging the parallel processing capabilities of GPUs. This course may be useful for Machine Learning Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Computational Scientist
Computational Scientists who are familiar with GPU programming can develop and use computational models that can run more efficiently and quickly by leveraging the parallel processing capabilities of GPUs. This course may be useful for Computational Scientists because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Data Scientist
Data Scientists with specialized knowledge in GPU-accelerated data processing can harness the power of these technologies to process large datasets more efficiently and quickly. This course may be useful for Data Scientists because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Computer Engineer
Computer Engineers who are proficient in GPU programming can design and develop computer systems that can take advantage of the parallel processing capabilities of GPUs. This course may be useful for Computer Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Systems Programmer
Systems Programmers who are proficient in GPU programming can develop operating systems and other system software that can take advantage of the parallel processing capabilities of GPUs. This course may be useful for Systems Programmers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Software Architect
Software Architects who understand the principles of GPU programming can design and develop software systems that can take advantage of the parallel processing capabilities of GPUs. This course may be useful for Software Architects because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Computer Architect
Computer Architects who are familiar with GPU programming can design and develop computer architectures that are optimized for GPU-accelerated computing. This course may be useful for Computer Architects because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Systems Engineer
Systems Engineers who are familiar with GPU programming can design and implement systems that can take advantage of the parallel processing capabilities of GPUs. This course may be useful for Systems Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Hardware Engineer
Hardware Engineers who are knowledgeable about GPU programming can design and develop computer hardware that is optimized for GPU-accelerated computing. This course may be useful for Hardware Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Mechanical Engineer
Mechanical Engineers who are proficient in GPU programming can develop and use computational models that can run more efficiently and quickly by leveraging the parallel processing capabilities of GPUs. This course may be useful for Mechanical Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Aerospace Engineer
Aerospace Engineers who are familiar with GPU programming can develop and use computational models that can run more efficiently and quickly by leveraging the parallel processing capabilities of GPUs. This course may be useful for Aerospace Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Big Data Engineer
Big Data Engineers with expertise in developing software for GPUs can play a critical role in ensuring that the applications they develop can handle the large and complex datasets they often encounter. This course may be useful for Big Data Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Electrical Engineer
Electrical Engineers who are knowledgeable about GPU programming can design and develop electrical systems that are optimized for GPU-accelerated computing. This course may be useful for Electrical Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.
Civil Engineer
Civil Engineers who are knowledgeable about GPU programming can develop and use computational models that can run more efficiently and quickly by leveraging the parallel processing capabilities of GPUs. This course may be useful for Civil Engineers because it develops foundational skills in GPU computing and programming, while also introducing students to CUDA-based software development.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to Concurrent Programming with GPUs.
Classic reference on CUDA programming. It provides a comprehensive overview of the CUDA programming model and architecture, as well as detailed guidance on how to develop efficient CUDA programs.
Classic reference on C programming. It provides a comprehensive overview of the C programming language, as well as detailed guidance on how to develop efficient C programs.
Provides a comprehensive overview of CUDA programming. It covers a wide range of topics, including CUDA architecture, CUDA programming models, and CUDA applications.
Provides a comprehensive overview of computer architecture. It covers a wide range of topics, including processor design, memory systems, and input/output systems. It valuable resource for students and professionals who want to learn more about computer architecture.
Provides a comprehensive overview of operating system concepts. It covers a wide range of topics, including process management, memory management, and file systems.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser