Writing a concurrent or parallel program that can run on multiple cores or on multiple nodes/computers in a cluster is not the same as writing a sequential program for a single CPU core. Typically sequential programs are only concerned with some aspects of how information is stored in RAM and the step-by-step (sequential) correctness of its code. A concurrent program is concerned with the non-sequential reasoning of how code executes and how it can see (or not) values in RAM from other streams of execution, how it orders reads and writes on those streams of execution, and the time it takes for data in to be transferred across busses (e.g., CPU to GPU RAM, CPU to machine RAM, etc.).
This course will provide a practical overview of important
concepts and details involved with concurrent programming in order to further understanding of the benefits, costs, and issues involved
with exploiting and writing parallel computing programs.
Live Session Dates: Nov. 22 & 25
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Paul Preney