Computer Science 296 Parallel Programming

Fall 2009
Alvin R. Lebeck

 

Objective:

This course is an introduction to parallel programming.  Topics covered include: programming models (shared memory, message passing, data parallel, etc.), programming environments (pthreads/OpenMP, MPI, CUDA, etc.), parallel hardware, parallel memory systems (coherence and consistency), application scaling, and topics from recent conferences on parallel programming.

Prerequisites:

Compsci 104, 108, (or equivalent), or consent of instructor. Please see the instructor if you have any questions about your background.  Most of the programming in this course requires familiarity with the unix make utility for compiling programs.  If you are not familiar with the make utility you should spend some time becoming familiar.

Location:

North 306 Wednesday & Friday 2:50 to 4:05

Course Web Page: http://www.cs.duke.edu/courses/fall09/cps296.3

Instructor:

Professor Alvin R. Lebeck
Office: D308 LSRC
Office Hours: Wednesday 10:30 – 11:30 and by appointment (email me)
Email: alvy (you figure out the rest)

Schedule

Grading:

This course is a seminar course and not a traditional lecture course.  Student involvement is an integral part of the course, thus reading and presenting material in both written and oral form is expected from the students.  There is very little busy work.  We will read several papers, if you have difficulty reading, writing, or speaking you will be expected to work hard to improve these skills.

Grades are based on:

Deadlines will be enforced except in very exceptional circumstances.  It is better to submit something nearly finished than wait and submit late.

 

Academic Misconduct:  I have a zero tolerance policy for academic misconduct, this includes cheating on homework/exams and plagiarism on the project.  If you have not worked on projects of the type expected in this course, then you need to particularly careful about citing previous work and crediting others’ research.

 

Programming Assignments

You will have at least three programming assignments.  Each programming assignment will be to implement a parallel program using a particular programming environment.  The three environments are pthreads, MPI and CUDA.  Further information regarding assignments and will be provided.  These programs are to be written by you, not downloaded from the internet or otherwise copied.

 

Program 1

Program 2

Program 3

 

Project

Each student will complete a semester project that is the parallel implementation of an algorithm of the student’s choosing.  Further details of the project expectations will be provided.