Introduction-Asynchronous/synchronous computation/communication, concurrency control, fault tolerance, GPU architecture and programming, heterogeneity, interconnection topologies, load balancing, memory consistency model, memory hierarchies, Message passing interface (MPI), MIMD/SIMD examples.
Multithreaded programming, parallel algorithms & architectures, parallel I/O, performance analysis and tuning, power, programming models (data parallel, task parallel, process-centric, shared/distributed memory), scalability and performance studies, scheduling, storage systems, synchronization, and tools.
At the end of the course the students will be able to
||Bloom’s Taxonomy Level
||Understand the requirements for programming parallel systems and how they can be used to facilitate the programming of concurrent systems.
||To learn and apply knowledge of parallel and distributed computing techniques and methodologies
||To learn the architecture and parallel programming in graphics processing units (GPUs).
||Understand the memory hierarchy and cost-performance tradeoffs.
||To gain experience in the design, development, and performance analysis of parallel and distributed applications
||L4, L6, L5