About: Curricular information

Target audience

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

Prerequisites

Have Docker installed or have access to a Linux system/vm/container)
Some Computer Science background (i.e., a few courses)
Some C programming (i.e., a 1-semester course)
Elementary Linux command-line skills
Knowledge of MPI (or access to tutorial or course materials)

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:
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

Approach

While many curricular materials have been developed homework assignments to be executed on parallel platforms, SMPI CourseWare relies on simulation. This approach has the following advantages:
No need to have access to a distributed-memory platform, such as a cluster
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.

License

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.