CS426/CS525
Parallel Computing
Course Description:
Parallel programming
platforms: distributed memory, shared address space, accelerators. Principles
of parallel algorithm design: decomposition techniques, tasks and interactions,
mapping for load balancing, interaction overheads, parallel algorithm models
(data-parallel, task-graph, work-pool, master-slave, pipeline).
Basic communication operations. Analytical modeling of
parallel programs: sources of parallel programming overhead, performance
metrics for parallel systems, scalability of parallel systems (speedup,
efficiency, cost, overhead function, isoefficiency,
cost optimality, degree of concurrency, granularity), parallel programming
paradigms: programming using MPI, programming shared address space platforms
(threads, OpenMP, Intel Thread Building Blocks),
programming GPUs (CUDA, OpenCL). Parallel computing
kernels: matrix transposition, matrix-vector multiplication, matrix-matrix
multiplication, matrix partitioning schemes for load-balancing and
communication minimization.
Prerequisite: CS 342
Required Textbook:
Introduction to Parallel
Computing,
Addison Wesley
Author: Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar
Credit Hours: 3
Class Schedule: Check STARS for detailed schedule
Classroom: EE517
Teaching Assistant:
???? ????
Office Hours: TBD.
Grading Policy
(Tentative):
Midterm Exam I 25%, in class
Midterm Exam II 25%, in class
Projects (3-5) 35% No late assignments will be accepted.
Class participation & pop quizzes 15%
Lecture Contents (Tentative!)