Prerequisites: Programming in C/C++.
This course provides an overview of parallel computing including processors, communications, topologies and languages; the use of workstation networks as parallel computers; the design of parallel programs, including data composition, load balancing, communications, and synchronization. It will cover both distributed memory and shared memory programming models, MPI, and threads. Students will be introduced to performance models and practical performance analysis, and case studies of parallel applications. A basic knowledge of Scientific Computing such as that provided by an introductory class is assumed as many of the motivating examples are taken from that area.