Stanford CME 213/ME 339 Spring 2021 homepage

Introduction to parallel computing using MPI, openMP, and CUDA

This is the website for CME 213 Introduction to parallel computing using MPI, openMP, and CUDA. This material was created by Eric Darve, with the help of course staff and students.

Syllabus

Syllabus

Policy for late assignments

Extensions can be requested in advance for exceptional circumstances (e.g., travel, sickness, injury, COVID-related issues) and for OAE-approved accommodations.

Submissions after the deadline and late by at most two days (+48 hours after the deadline) will be accepted with a 10% penalty. No submissions will be accepted two days after the deadline.

See Gradescope for all the current assignments and their due dates. Post on Slack if you cannot access the Gradescope class page. The 6-letter code to join the class is given on Canvas.

Datasheet on the Quadro RTX 6000

Final Project

Final project instructions and starter code:

Slides and videos explaining the final project:

See also the Module 8 videos on MPI.

Class modules and learning material

Introduction to the class

CME 213 First Live Lecture; Video, Slides

C++ tutorial

Module 1 Introduction to Parallel Computing

Module 2 Shared Memory Parallel Programming

Module 3 Shared Memory Parallel Programming, OpenMP, advanced OpenMP

Module 4 Introduction to CUDA programming

Module 5 Code performance on NVIDIA GPUs

Module 6 NVIDIA guest lectures, openACC, CUDA optimization

Module 7 NVIDIA guest lectures, CUDA profiling

Module 8 Group activity and introduction to MPI

The slides and videos below are needed for the final project.

Material for the May 17 group activity:

Module 9 Advanced MPI

Module 10 SLAC guest lecture, Task-based parallel programming

Lawrence Livermore National Lab Resources

C++ threads

OpenMP

CUDA

MPI

Open MPI hwloc documentation

Task-based parallel languages and APIs

Sorting algorithms