About: Curricular information

Target audience

Students/Researchers/Practitioners who want to complement their learning with hands-on experience with distributed-memory programming, message-passing, MPI, and high performance computing
Instructors who want to provide students with compelling hands-on experiences as part of the coursework they develop


Access to a Linux (virtual) machine
Some Computer Science background (i.e., a few courses)
Basic C programming skills (i.e., a 1-semester course)
Elementary Linux command-line skills
Access to MPI documentation/tutorials

Learning Objectives

The broad learning objective of SMPI CourseWare is to learn how to write efficient message-passing programs that run on distributed-memory architectures, using the MPI standard. Specific learning objectives include:
Learn the fundamentals of the MPI API
Understand general distributed-memory programming techniques and learn standard solutions to common problems
Learn how to implement distributed-memory programs, going from traditional "rigid" programs to more "dynamic" programs
Understand and experience performance trade-offs when implementing and executing distributed-memory programs on ranges of distributed-memory platforms


While many curricular materials have been developed for teaching message-passing, MPI, and distributed-memory programming, SMPI CourseWare relies on the use of simulation, which has the following advantages:
No need to have access to a distributed-memory platform
Ability to run many experiments quickly and reproducibly on one's own computer
Ability to explore arbitrary "what if?" scenarios, in particular to experience performance trade-offs first-hand
The above is accomplished using SMPI (Simulated MPI), which is provided as part of the SimGrid project. SMPI simulates the execution of unmodified MPI applications.


SMPI CourseWare is distributed under the CC-BY-SA license, which basically means that you can freely reuse and extend its content, provided that you don't reduce the rights of your readers. Check the full license for the exact legal terms of this license.