COS 598A: Parallel Architecture and Programming  

Spring 2008, Princeton University


Course Summary | Announcement | Administrative | Course Projects | Resources


Course Summary

Parallel computing is a mainstay of modern computation and information analysis and management, ranging from scientific computing to information and data services.  The inevitable and rapidly growing adoption of multi-core parallel architectures within a processor chip by all of the computer industry pushes explicit parallelism to the forefront of computing for all applications and scales, and makes the challenge of parallel programming and system understanding all the more crucial.  The challenge of programming parallel systems has been highlighted as one of the three greatest challenges for the computer industry by leaders of even the largest desktop companies.

This course caters to students from all departments who are interested in using parallel computers of various scales to speed up the solution of problems. It also caters to computer science and engineering students who want to understand and grapple with the key issues in the design of parallel architectures and software systems.  A significant theme of the treatment of systems issues is their implications for application software, drawing the connection between the two and thereby making the systems issues relevant to users of such systems as well.  In addition to general programming and systems, there will be a significant focus on the modern trend toward increasingly more parallel multi-core processors within a single chip.

The first two thirds of the course will focus on the key issues in parallel programming and architecture.  In the last third, we will examine some advanced topics ranging from methods to tolerate latency to programming models for clustered commodity systems to new classes of information applications and services that strongly leverage large-scale parallel systems. Students will do a parallel programming project, either with an application they propose from their area of interest or with one that is suggested by the instructors. Students will have dedicated access to two kinds of multi-core processor systems in addition to large-scale multiprocessors for their projects.

Prerequisites: COS 318 and 475 or instructor's permission.

Text Book: Parallel Computer Architecture: A Hardware-Software Approach by David Culler and Jaswinder P. Singh, with Anoop Gupta Tanenbaum, Morgan Kaufmann Publishers, 1998.


Announcements


Administrative Information

Lectures

Professor

Teaching Assistants


Course Projects

The course requires the successful completion of a parallelization project. Progress must be shown by reaching two milestones, the last one of which requires the submission of a fully parallelized program which scales well. The submission of the final milestone is due on:

Dean's Date (Tuesday, May 13; 11:59pm)


We have a list of suggested projects from which you may choose if you are still looking for a proposal.

Final Milestone (Due on Tuesday, May 13; 11:59pm)

Please submit your parallelized program in a serial and a parallel version. Complete this summary with all the information asked for. You can use the following script to check for data races as described in the summary.

Milestone 1 (Due on Sunday, April 12; 11:59pm)

Please submit a serial version of your program, an input for your program and a brief summary. Use this template for the summary. The template contains further instructions and all the questions you have to answer, such as the following ones:

Precepts

Due to the individual nature of the course projects, no conventional precept is offered for the course. Instead, students are encouraged to meet with the teaching assistant to discuss issues with their projects on a personal basis.

Students are required to complete milestones with their projects during the course of the semester. The exact requirements and deadlines will be announced in advance.

Extensions

Project complexities vary, and the amount of work necessary to parallelize the chosen programs can differ. In justified cases, we offer a way to relax the requirements given above so that a parallel version can be submitted at a later time. Extensions are not granted automatically, you have to make a compelling case for it. If you need an extension, mail the instructors and ask for an appointment (see below). Have the following information at hand for the meeting:

Submission Instructions

You can submit your work on niagara.cs.princeton.edu. You need a working account for the CS department network and on niagara. A detailed description of that machine is available in the Resources section.

To submit your work, execute the following command:

/usr/local/bin/submit FILE...


You can specify any number of files, and you can execute the submit command as often as you want to add additional files or overwrite already submitted files. Do not forget to submit the template, too.

You can also delete your submission as follows:

/usr/local/bin/unsubmit


The unsubmit command does not take any arguments and will delete all previously submitted files. It is currently not possible to delete individual files from your submission.

Resources

Parallel Machines

There are three types of parallel machines available for you to use.

Tutorial and Documentation