CMPE 220 - Advanced parallel processing - Winter 2008
Extended description and syllabus
This class covers an introduction to programming two of the most advanced parallel architectures: SIMD massively-parallel processor arrays and graphics cards used for general-purpose processing (GPGPU).
The first part uses a parallel processor designed and built here at UCSC - the UCSC Kestrel processor, with 512 Processing Elements. This accelerator was designed 15 years ahead of its time, and it is representative of a class of coprocessors that is starting to being adopted by the industry only now. An experience with programming this beautiful architecture opens up the mind to the real "thinking in parallel" that will be the key to all future programming. The lab for this part of class is based on programming in explicitly-parallel assembly language.
The second part of this course focuses on an increasingly popular approach to computational acceleration, based on leveraging the large floating-point horsepower of advanced video cards to perform general-purpose computations. The video cards' hardware is designed for a very specific purpose, and it used to only be able to handle a limited set of data types. The latest video card models, however, are designed with a broader scope in mind and are more flexible. To facilitate their use, Nvidia has recently developed a specific C-like language, called CUDA. The class will study the evolution of video card architectures and programming methods, from OpenGL/Cg to CUDA. The lab for this part of class is based on programming in C on video cards of different generations.
The class includes a final project and relative presentation.
Provisional syllabus
- Week 1: Introduction to class and to parallel processing, Kestrel ISA
- Week 2: Sorting algorithms on SIMD (Sorting networks)
- Week 3: String matching and matrix on SIMD (Smith-Waterman, matrix multiplication)
- Week 4: Asynchronous applications on SIMD (Mandelbrot set)
- Week 5: Parallel performance metrics (Midterm presentations on Thu 2/14)
- Week 6: Introduction to the graphics pipeline and OpenGL
- Week 7: Intro to GPGPU and Cg
- Week 8: GPGPU readback, GPGPU math
- Week 9: Introduction to CUDA
- Week 10: CUDA applications
Grading policy
The final grade is the combination of the following factors:
- Class partecipation and required readings: 10%
- Midterm presentations: 20%
- Final project execution: 20%
- Final project presentation: 10%
- Weekly programming assignments: 40%
Passing is 70% and above, corrsponding to a grade B and above.
Textbook
There is no single textbook for this class. The first part of the course will be based on the lecture notes and various articles.
The second part of class will be based on lecture notes, articles, and parts of:
- The GPU tutorials by Dominik Goeddeke.
- "The OpenGL programming Guide" (aka "The Red Book"), Addison-Wesley
- "The Cg Toolkit User's Manual", nVidia Corp.
- "The Cg Tutorial", R. Fernando and M. Kilgard, nVidia Corp.
- "GPUGems 2", M. Pharr ed., nVidia Corp. Addison-Wesley
- "CUDA Programming Guide", nVidia Corp.
Most articles and readings will be handed out in class or posted.

