Course Description

Parallel computation has a rich history, and the techniques for solving problems on parallel computers are both intriguing and intellectually appealing. Technological disruption has periodically changed the course of the field, stimulating novel ways of solving problems, making tomorrow’s problems tractable today.

The course will cover principles and practices of parallel programming on Graphical Programming Units (GPUs), computing clusters, and multicore processors, with applications to real world problems. There will be a fair bit of programming in the course. Our computational platforms will include cutting edge systems at the San Diego Supercomputer Center and a GPU clsuter at the National Center for Supercomputing Applications.

The prerequisite for CSE 260 is graduate standing. It will be helpful to have an undergraduate background in computer architecture or operating systems. Students from other departments are welcome; contact me if you have any questions about your academic background.

The home page for this course is

The course has two required texts

  1. Programming Massively Parallel Processors: A Hands-on Approach, By David Kirk and Wen-mei Hwu.
  2. An Introduction to Parallel Programming, by Peter Pacheco, Morgan Kaufmann, 2011.

Other readings will come from the published literature.


  • Fundamentals (motivation, execution models, address space organization, performance)
  • Programming (message passing, threads, higher level models)
  • Data structures and their efficient implementation (multi-resolution representation, graphs, partitioning)
  • Graphical Processing Units
  • Performance Programming
  • Applications (sorting, data intensive, irregular problems, discretization, and others)

  • Maintained by [Wed Nov 16 08:15:51 PST 2011] Valid CSS! Valid CSS!