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 the principles and practices of parallel programming on Graphical Programming Units (GPUs), multicore processors and computing clusters, with applications to real world problems. There will be a fair bit of programming. Our computational platforms will include cutting edge systems located in the CSE and Math Departments at UCSD and at the National Energy Research Scientific Computing Center (NERSC).

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 http://www.cse.ucsd.edu/classes/fa12/cse260-b

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.

Syllabus

  • Fundamentals (motivation, execution models, computer architecture, performance)
  • Programming models, languages and libraries (message passing (MPI), threads, OpenMP, CUDA, PGAS, Cilk)
  • Data structures and partitioning (multi-resolution representation, load balancing)
  • Performance Programming (blocking, message aggregation)
  • Applications (irregular problems, stencil methods, linear algebra, and others)


  • Maintained by [Tue Sep 25 17:33:53 PDT 2012] Valid CSS! Valid CSS!