Graphics Processing Units (GPUs): Architecture and Programming

Prof. Mohamed Zahran   (aka Prof. Z)
mzahran AT cs DOT nyu DOT edu
 Tuedays: 7:10PM — 9:00PM   WWH 1302
                                                                                         Office Hours (WWH 320): Tuesdays 4:30-6:30pm                                                                                          


Welcome students! ... to the Graphics Processing Units course, edition Fall 2013.  I will keep updating this page regularly. If you have questions related to this course feel free to email me. Here is some basic information:

This course examines the architecture and capabilities of modern GPUs (graphics processing unit).
Many computations can be performed faster on the GPU than on a traditional CPU.  
This is why GPUs are present now in almost all computers; and the majority of Top 500 supercomputers in the world are built around GPUs.
GPUs are now used for a diverse set of applications not only traditional graphics applications; which introduces the concept of general-purpose GPUs or GPGPUs.
In this course, we will cover architectural aspects of modern GPUs. We will also learn how to program GPUs to solve different type of problems and how to make
the best use of its hardware.
Our grader:
Ram Charan Mohan  
email: rcm372 (at)

Final exam:  Dec 17, 7:10-9pm Room 1302

Mailing List

Sign up for the Mailman mailing list for the course, if you have not done it already. You can manage your subscription by clicking here.
Please follow the mailing list etiquette. 


1.   9/3 Gentle Introduction to GPUs      chp 1
2.   9/10GPGPUs: Evolution and Hardware Perspectivechp 2 and this paper
  • hw1 assigned
3.   9/17CUDA: Introductionchp 3
4.   9/24CUDA: Threadschp 4
  • lab1 assigned
5.   10/1CUDA: Memorychp 5
6.   10/8GPU performancechp 6
  • hw2 assigned
  • proj def report due
7.   10/22Parallel Patterns and Performance Considerations
8.   10/29 Advanced Techniques in CUDA
  • lab2 assigned
9.   11/5 Multiple GPUs in the system and Heterogeneous systemspapers:  1,  2 and 3   
  • Survey and design report due
10. 11/12OpenCL chp 14  and this tutorial
  • lab3 assgined
11. 11/19What's Next:  Hardware
  • hw3 assgined
12. 11/26What's Next: Software
13. 12/3Putting It All Togetherpaper
  • Final proj report due
14. 12/10Revision

Final exam of Spring 2012

Assignments (non-programming)

Assignment 1: Due  Sep 17th, 2013 -

Assignment 2: Due Oct 22nd, 2013 - Solutions - Comments 

Assignment 3: Due Nov 26th, 2013 - Solutions

Programming Assignments

Lab 1: Due Oct 1st, 2013  Comments

Lab 2: Due Nov 5th, 2013

Lab3: Due Nov 19th, 2013


CUDA GPU Servers at NYU
OpenCL GPU Servers at NYU

Suggested projects (but feel free to suggest your own):

Interesting Links (Geeky stuff about GPUs)

CUDA C programming guide
CUDA occupancy calculator

GPU Computing
First  digital 3D rendered film (Thanks William Ward)
Interview with Ed Catmull (Thanks William Ward)
NVIDIA GPU computing seminars
For CUDA developers
Series of CUDA articles at Dr. Dobb's
OpenCL 2.0 reference card

GPU Simulators and Tools:
Multi2sim (simulates both GPUs and multicore)
GPUOcelot (dynamic compilation for PTX)