This page will be updated regularly. Please visit (and reload) often.

Modern Parallel Programming
Course# CSL 860 (Sem II, 2008-2009)

Bharti 204 Mon/Thu @5:30pm


News & Announcements


Course Information

This is a first course in parallel programming and does not require any parallel computing knowledge. Only a Data structures level course is required. Although numbered 8xx (the number may change in the future), it will be targeted at 3rd year undergraduate students (and graduate students who have not had parallel programming before). This will not be a theory-only course and will require significant parallel programing. With the growing number of cores on a chip, programming them efficiently has become an indispensable knowledge for the future. Modern Parallel Programming is a hands-on course involving significant parallel programming on compute-clusters, multi-core CPUs and massive-core GPUs.

Syllabus

Part I

Introduction
From serial to parallel thinking: common gotchas
A history of parallel computers and lessons learned from them.
Performance metrics - speedup, utilization, efficiency, scalability
Models of Parallel Computation
SIMD, MIMD
PRAM (EREQ, CREW,CRCW), NC
How useful are these models for modern machines
Parallel Computer Organization
Pipelining and Throughput
Latency and Latency hiding
Memory Organization Inter-process communication Inter-connection network
Message passing
Shared/Distributed memory
Basic Parallel Algorithmic Techniques
Pointer Jumping, Divide-and-Conquer, Partitioning, Pipelining,
Accelerated Cascading, Symmetry Breaking, Synchronization (Locked, Lock-free) Parallel Algorithms
Data organization for shared/distributed memory
Min/Max,Sum
Searching, Merging, Sorting, Prefix operations
N-body problems, Matrix operations

Part II

Writing Parallel Programs
GPU-Compute Architecture, CUDA, Memory organization in CUDA
Multi-Core CPU programming, MPI, PVM,
Performance evaluation and scalability

Assignments & Grading

Work Points Schedule
Quizes 25 Could be take-home
Lab Exercise 1 7
Lab Exercise 2 8
Project 35 (25% design, 25% presentations, 50% Demo)
Final Exam 25

Late Policy:

Reference Books

An Introduction to Parallel Algorithms by Joseph Jaja (Addison-Wesley Professional)

Introduction to Parallel Computing by Ananth Grama, George Karypis, Vipin Kumar and Anshul Gupta (Pearson)

Parallel Programaming in C with MPI and openMP by Michael J Quinn (McGraw Hill)


Reading Material



Slides

Week Topic Reading Material 1: Sep 10 Overview: Devices, Hardware etc. HB Ch 1, Appendix.
FVFD 1,4,8, Appendix. 2: Sep 17 OpenGL tutorial OpenGL Programming Guide 3: Sep 24 Linear algebra Tutorial
Modeling and Transformation
HB Ch 7, 11, 12. (2D versions in Ch 5 and 6). Lightly read Ch 10.
FVFD Ch 5, 6, 7(pp 285-307) Lightly read Ch 11,12.
(Skip sections on clipping for now)
4: Oct 1 Transformations and Viewing
In class Quiz on Oct 1 Continued from previous week
5: Oct 8 Color and Light HB Ch 15, 14.
FVFD Ch 13, Ch 16.1, 16.2. 6: Oct 15 Oct 15 is Fall Break
Illumination Models (contd)   7: Oct 22 Clipping
Mid-term exam Oct 24 HB Ch 6 (sec 5-8), Ch 12 (sec 5), Ch 13.
FVFD Ch 3 (sec 11-14), Ch 6 (sec 5.4 and 5.5), Ch 15. 8: Oct 29 2D Rasterization. HB Ch 3: pp 84-109,114-126.
FVFD Ch 3: pp 67-99. 9: Nov 5 Shading
 
  10: Nov 12 Visibility HB Ch 3: pp 171-180.
FVFD Ch 3: pp 132-140, Ch 16: pp 617-646.
11: Nov 19 Anti-aliasing. Filtering. We need more aliasing.., Return of the Jaggy (by Jim Blinn) in IEEE CG&A 9(1,2). 12: Nov 26 Shadows, Transparency. HB Ch 14.
FVFD Ch 16.4, 16.5.
13: Dec 3 Textures, Bump maps etc.
HB Ch 14.
FVFD Ch 16.3, Ch 17.4.3. 14: Dec 10 Graphics Architecture (Excerpts from) FVFD Ch 18. Dec 15 Final Exam 2pm-5pm in class (Shaf 304)   !-->

Academic Integrity Code

Academic honesty is required in all your work. Verbal discussion of assignments is fine but looking at someone else's work and then doing your own is not. You must do all written and programming assignments on your own, except where group work is explicitly authorised. Letting your work become available or visible to others is also cheating. For your project, you may borrow code available online but must clearly identify such code with due reference to the source. First instance of cheating will invite a zero in the assignment and a letter grad penalty. Repeat offender will fail the course.