ECSE420, Parallel Computing

INSTRUCTOR: Zeljko Zilic ( zeljko@ece.mcgill.ca)

LECTURES:
Monday and Wednesday, Rm TR1090: 4:35-5:55 p.m.

The developments in computer architecture in the last thirty years have mostly revolved about the effective use of parallelism. However, only recently have the parallel computers become widespread and irreplaceable. This course will deal with the basics of parallel computer architectures, as well as the programming techniques applicable to concurrent, parallel and distributed programs. In architecture, our focus will be on the most widely accepted architectures, as well as with the multiprocessors on a chip. In the software part, we will mostly cover modern threading techniques and distributed programming concepts.

COURSE AIM: On completing this course, students should understand the parallel computer architecture, as well as to apply the modern programming techniques to a variety of concurrent, parallel and distributed computing scenarios.

REQUIRED TEXTBOOKS:
none

RECOMMENDED TEXTBOOKS:
D. Culler and J. P. Singh, Parallel Computer Architecture, Morgan Kaufmann Publishers, 1999.
B. Wilkinson and M. Allen, Parallel Programming , Prentice-Hall, 2005.

COURSE CONTENT & LECTURE SCHEDULE:
Background: Computer Architecture preliminaries [1 week]
Parallel Computer Architecture: [4 weeks]
Distributed Memory Architecture: [2 weeks]
Cache Coherent-NUMA and SoC Multiprocessors: [2 weeks]
Concurrent Programming: [2 weeks]
Parallel and Distributed Programming:[2 weeks]
Project Presentations: [1 weeks]

ASSIGNMENTS:    There will be 4 assignments, an examination and a final project. The project will focus on testing aspects related to students' research/graduation topic. Presentation and written report required.

GRADING SCHEME:  Assignments (10% each): 40%.  Midterm exam: 30%.   Project: 30%