CS 426 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 201
Required Textbook:
Introduction to Parallel Computing,
Addison Wesley
Author: Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar
Credit Hours: 3
Class Schedule: 8:40 - 10:30, M and 10:40 - 12:30, W
Classroom: EB204
Teaching Assistants:
Omer Erdil Albayrak
Office: EA425
Email: oalbayrak@cs
Kadir Akbudak
Office: EA425
Email: kadir@cs
Grading Policy (Tentative):
Midterm Exam 25% Date and Location TBD
Final Exam 35% Date and Location TBD
Projects (3-5) 35% No late assignments will be accepted.
Class participation & pop quizzes 5%
Homework/Project Policy !!!!!!
Lecture
Contents (Tentative!)