Course Description

Intro to Parallel Programming Using CUDA to Harness the Power of GPUs This course introduces students to the exciting field of parallel programming using the CUDA programming model for GPUs. GPUs, or Graphics Processing Units, were originally designed for rendering graphics in video games and other graphical applications, but their highly parallel nature also makes them well-suited for scientific computing, machine learning, and other compute-intensive applications. The course starts with an introduction to parallel computing concepts and how they apply to GPUs. Students will learn about parallelism, concurrency, and scalability, and how these concepts can be used to write efficient and scalable GPU programs. The course then delves into the CUDA programming model and how it can be used to harness the power of GPUs. Students will learn about CUDA programming constructs such as kernels, threads, and blocks, and how to use these constructs to write parallel programs that run on GPUs. Throughout the course, students will gain hands-on experience with CUDA programming through a series of programming assignments and projects. They will learn how to write CUDA programs using the CUDA C++ programming language, and how to use tools such as nvcc, the CUDA compiler, and NVIDIA's profiling tools to analyze and optimize their programs. In addition to learning how to write efficient and scalable GPU programs, students will also gain an understanding of the broader landscape of parallel programming. They will learn about other parallel programming models, such as OpenMP and MPI, and how these models can be used to write parallel programs that run on CPUs and other parallel computing platforms. By the end of the course "Intro to Parallel Programming Using CUDA to Harness the Power of GPUs", students will have a solid foundation in parallel programming and be able to write efficient and scalable GPU programs using the CUDA programming model. They will also be well-prepared to explore other parallel programming models and apply their knowledge to a wide range of compute-intensive applications. Author: (Udacity)