CSCI 503 - Parallel Programming
Spring 2008
Course Description:
This course is a comprehensive exploration
of parallel programming paradigms, examining challenges introduced by
the growing diversity of modern parallel computing architectures,
surveying the set of contemporary research ideas in the area,
evaluating historical examples and their impact, and providing context
with parallel algorithms. In the last few years, this area has been
the subject of renewed interest as the advent of multi-core
microprocessors will soon make parallel computing available to the
masses. Students in the course will learn how to develop scalable
programs for the parallel architectural continuum from systems-on-a
chip to high-end platforms with tens of thousands of processors. As this
course combines hands-on programming and a discussion of research in
the area, it is suitable for advanced Masters students and PhD
students who wish to learn how to write parallel applications or are
engaged in research in related areas.
Prerequisites:
Basic knowledge of: programming in C (CS101L, CS455X, or equivalent);
data structures (CS102L or equivalent); and computer architecture or
game hardware architecture (EE457, EE452, or equivalent).
Textbook:
Grama, A. Gupta, G. Karypis, and V. Kumar, Introduction to Parallel
Computing, 2nd Ed. (Addison-Wesley, 2003).
Additional Readings, connected with lectures
Instructor:
Class Schedule:
- Lecture: Tuesdays, 2.00 PM to 4.50 PM.
- Location: WPH102
- Office Hours: Tuesdays 11:00 AM to 11:50 AM, SAL 234 (or by appointment).
Basis for grades:
- 30% homework
- 50% projects
- 15% presentation
- 5% class participation
Assignments:
- Homework 1: due in class,
Tuesday, January 22, 2008
- Homework 2: due in class,
Tuesday, January 22, 2008
- Programming Assignment 1: due
Monday, February 25, 2008, 8PM PST
Auxiliary files: t1.c
t2.c
t3.c
t4.c
t5.c
youwrite.c
- Programming Assignment 2: due
Friday, March 28, 2008, 8PM PST
- Programming Assignment 3: due
Friday, May 2, 2008, 8PM PST
Syllabus
Lecture Notes:
Lecture 1: Introduction
Lecture 2
Lecture 3: Memory Hierarchies (1perpage) (4perpage)
Lecture 4: SIMD / Multimedia Extensions (1perpage) (4perpage)
Lecture 5: Shared Memory Programming (1perpage) (4perpage)
Lecture 6: Parallel Algorithms (1perpage) (4perpage)
Lecture 7: Dense Matrix Algorithms (1perpage) (4perpage)
Supplement: The Future of
Compilers for Parallel Architectures, from Systems-on-a-Chip to
Supercomputers
Lecture 8: Graph Algorithms (1perpage) (4perpage)
VTUNE, Paul Petersen, Intel
Lecture 9: Data Parallel
Programming Models
(1perpage) (4perpage)
Lecture 10: CUDA
(1perpage)
Lecture 11: HPCView
(1perpage) (4perpage)
Lecture 12: Global Address Space
Languages
(1perpage) (4perpage)
UPC, Kathy Yelick
Chapel, Brad Chamberlain
Lecture 13: Message Passing
(1perpage) (4perpage)
Lecture 14: MapReduce
(1perpage) (4perpage)