Department of Computer Science
Stevens Institute of Technology
Office: Lieb 215
|CS 677: Parallel Programming for Many-core Processors
Wednesday 6:15-8:45 PM.
Tuesday 5-6 and by appointment.
One of the following courses or demonstrated experience in C/C++.
The required textbook is the following. I will also use notes outside the textbook, mostly in the second half of the semester.
Programming Massively Parallel Processors: A Hands-on Approach
by David Kirk and Wen-mei Hwu
Morgan Kaufmann, 2012 (2nd edition)
Homework assignments (40%)
Homework assignments will be assigned almost every week up to Week 7 and will be due a week later.
The midterm is scheduled for Week 8. It will cover theoretical aspects of massively parallel programming to aid the implementation of the final projects.
Each student will select a project, which has to be approved by me regarding relevance and feasibility. I will also provide suggestions for potential projects and pointers to relevant material. Students actively involved in research can select a project related to their research, but new work has to be done during the semester. Large projects can be performed by groups of two students. Each student will briefly present a proposal of his or her project in Week 8. Longer status updates will be given three weeks later and the final presentations will be given in the last week of classes. The written reports will be due on the date of the (non-existant) final exam.
Week 1: Introduction to massively parallel programming and CUDA (Kirk & Hwu Ch. 1, 2 and 3)
Lecture 1 slides (pdf)
Week 2: CUDA threads and atomics; CUDA memories (Kirk & Hwu Ch. 4 and 5)
Lecture 2 slides (pdf)
Homework 0 (pdf) is due on Feb. 5.
Week 3: Performance considerations (Kirk & Hwu Ch. 6)
Lecture 3 slides (pdf)
Homework 1 (pdf) is due on Feb. 12.
Week 4: More performance considerations and floating point representation (Kirk & Hwu Ch. 6 and 7)
Lecture 4 slides (pdf)
Homework 2 (pdf) and zip is due on Feb. 18.
Week 5: Project ideas; Case study: MRI reconstruction (Kirk & Hwu Ch. 11) and timers
Lecture 5 slides (pdf)
Week 6: Convolution, constant memory and cache, reduction trees, parallel patterns: prefix sum (Kirk & Hwu Ch. 8 and 9)
Lecture 6 slides (pdf)
Homework 3 (pdf) and zip is due on March 4.
Week 7: Project proposals; Case study: Electrostatic Potential Calculation; input binning; Sparse matrix and vector operations; summed area tables (Kirk & Hwu Ch. 10, 12, 13 and notes)
Lecture 7 slides (pdf)
Homework 4 (pdf) and zip is due on March 25.
Week 8: Midterm
Week 9: Computational thinking and CUDA Streams (Kirk & Hwu Ch. 13)
Lecture 9 slides (pdf)
Week 10: Thurst; more libraries. (notes)
Lecture 10 slides (pdf)
Week 11: OpenCL (Kirk & Hwu Ch. 14 and notes)
Lecture 11 slides (pdf)
Project Status Report (pdf) due on Tuesday, April 14.
Week 12: Project mid-point reports; more OpenCL.
Lecture 12 slides (pdf)
Week 13: Fermi, Kepler and Maxwell; CUDA 4.0, 5.0, 6.0 and 7.0; OpenACC
Lecture 13 slides (pdf)
Week 14: Project presentations
Textbook companion site.
The most recent CUDA toolkit. The toolkit includes the NVIDIA CUDA Compiler, and other software necessary to develop CUDA applications.