Course Description
Parallel computer architectures are ubiquitous today, adopted by all computer systems ranging from mobile devices like cellphones, laptops to data centers. In this course, we examine various parallel architectures, networking, and the programming model that they support. The topics covered in this course include, but are not limited to:- Advanced computer architecture: multicore, manycore, heterogeneous architectures, shared memory architectures, distributed memory architectures, computer clusters, and data centers
- Networking: line, ring, grid, torus, etc
- System software: resource management, workload scheduling, data storage, and file systems
- Programming models: multithreading, message passing, PGAS, MapReduce, CUDA
- Performance measurement, benchmarking, evaluation and analysis
Learning Objectives
Upon competition of this course, students will be able to:- Master the principles and design methods for parallel systems
- Be familiar with the state of the art computer architecture, systems, and applications
- Understand technical details of system software for parallel systems
- Identify and use proper programming models to solve common problems
- Use methodology and tools to profile and evaluate performance, power, and resilience
Recommended Materials
-
A textbook and some technical papers will be used as the reading material. The textbook covers the fundamental concepts and technical papers
introduce the new parallel architectures and programming. Students are required to read the materials before coming to class.
- Textbook: D.E. Culler & J.P. Singh Parallel Computer Architecture, Morgan Kaufmann, 1999. (ISBN: 1-55860-343-3)
- Papers will be assigned for reading during the semester.
Technical Requirements
Ideally, students should have taken courses in operating systems, computer architecture, and algorithms. Students should be comfortable with programming in C/C++ and Linux/Unix environment.
Assignments and Grading
The tentative grading scheme is as follows:- Parcitipation: 10%
- Programming assignments: 40%
- Final project: 20%
- Exam: 30%