Multicore processors are now ubiquitous, yet programs seldom exploit parallelism, perhaps because writing correct parallel code is hard.
The goal of this lecture series is to introduce students to the idea of deterministic parallel programming, which strikes a reasonable balance between programmer productivity and machine efficiency.
We will use the Cilk extension of C and C++ as a vehicle for the concepts taught in the course.
(These lectures are part of the MPRI 2.23.1 module.)
Introductory notes on cost semantics.
Cilk benchmarks, including terse documentation.
Some exercises.
Luc Maranget’s part of MPRI 2.23.1 about weak memory models.