Go to USC home page USC Logo Computer Science & Engineering
UNIVERSITY OF SOUTH CAROLINA
CSE Home Page | CSE Research | CSE Site Map | CSE Faculty
CSCE 569
Parallel Programming
Duncan A. Buell
Professor and Chair
Department of Computer Science and Engineering
University of South Carolina
Columbia, SC 29208
3A01 Swearingen Engineering Center
buell in domain cse.sc.edu
803-777-2880(voice)
803-777-3767(fax)
Office hours: 1:00-2:30pm M-W
grizzlefarb
CSCE 569 web page

Class meeting time: MW 2:30-3:45, SWR 2A15

Office hours: MW 1:00-2:30, SWR 3A01

This URL is www.cse.sc.edu/~buell/csce569/csce569_2004_4fall.html

My home page is www.cse.sc.edu/~buell/Home.html


The graduate assistant for this course is Xizhou Feng, id "fengx" in the domain "cse.sc.edu".

Caveat


This page is likely to be under changing throughout the semester as assignments and notes are added to it.

Text

Michael Quinn, Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2004.

Other References

  • There are some links further down in this web site that include tutorials and other relevant material. There are also a number of FAQ and tutorial links on the CSE departmental web server; for these, you should log in to the "Student and Faculty Login" link off the home page and follow the links to the resources about software. You could also go directly to the department's secure web server and follow the links from there to the information about computing resources.
  • Peter Pacheco, Parallel Programming with MPI, Morgan Kaufman Publishers
  • Wilkinson and Allen, Parallel Programming: Techniques and applications using networked workstations and parallel computers, Prentice-Hall
  • Ian Foster, Designing and Building Parallel Programs, Addison Wesley, 1995
  • Gene Golub and James M. Ortega, Scientific Computing: An Introduction with Parallel Computing, Academic Press, 1993
  • William Gropp, Ewing Lusk, and Anthony Skjellum, Using MPI: Portable parallel programming with the Message-Passing Interface, 2d edition, MIT Press, 1999
  • William Gropp, Ewing Lusk, and Rajeev Thakur, Using MPI-2: Advanced features of the Message-Passing Interface, MIT Press, 1999
  • T. L. Sterling, J. Salmon, D. J. Becker, D. F. Savarese, How to Build a Beowulf, MIT Press, 1999
  • Kernighan and Ritchie, The C Programming Language, Prentice-Hall.
  • Kochan, Programming in ANSI C, SAMS Publishing.
  • An online C Programming Course
  • A set of C Programming Notes
  • A C Tutorial

Email

There are CSE department email lists for CSCE 569, namely csce569-001 and csce569-002 in the domain @cse.sc.edu. These send email to the CSE departmental login that you get with this course. A mass mailing to the entire class will be done through the mail aliases csce569-001 and csce569-002. Actually, any of you can send mail to this alias. It's just csce569-001 and csce569-002 in the domain cse.sc.edu.

The mail alias of the previous paragraph sends mail to the CSE departmental login that you get with this course. You are responsible for reading mail sent to this account. You can set the dot forward file (via the secure web server service for this purpose) to any other account you wish, including an engr.sc.edu account, but you are responsible either for reading mail at this account or setting up the dot forward file.

If you send me an email from some other account, then I will respond to that email with the "Reply" button. However, if I have to initiate an email to you, I will not use any account other than the CSE departmental account. This includes the engr.sc.edu accounts. To repeat: I will initiate mail to you individually only at loginid@cse.sc.edu. I will not initiate email to an engr.sc.edu account, or to any other account you may have.


Outline, Prerequisites, and Expectations:

The course will cover a background in parallel computers, parallel programming methodologies, and concepts of parallel algorithms. We will also investigate, on a case study basis, some applications for which parallel programs provide the speedup necessary to solve large problems in science and engineering. The case studies will include some (due to lack of time, almost certainly not all) of the following.

We will be programming on a beowulf cluster and also, I hope, a shared memory multiprocessor machine. Programming could be done in any of C, Fortran, or C++, but I will support only C or Fortran. I am likely, however, to present all examples in C and not also in Fortran. I will also consider C++ to be deprecated; although it's a great language for programming when control of the programming process is needed, the code generated by the compilers is often not sufficiently predictable to make it a desirable language for high performance computing. User interfaces and general program structure are done in C++. The kernel routines are all done in straight C. Since what we're going to be doing are mostly at the level of the basic computations, C++ will be deprecated.

  • Sorting
  • Fast Fourier Transforms
  • Parallel random number generation and Monte Carlo methods
  • Matrix computations: multiplication, decomposition (Cholesky, LU, QR, singular value), and solution methods (such as conjugate gradient).
  • Finite element and finite difference methods
  • Multigrid methods
  • Tree searches, bin packing problems
  • Integer factoring methods
  • Computational biology
  • Image processing

Tests and assignments

There will be one midterm exam and a final exam during the semester. The midterm is presently scheduled for 27 September 2004, timed so that you can get back your exams just before the 1 October 2004 deadline to drop without receiving a WF grade.

The final exam is scheduled for Saturday, 11 December 2004, at 2:00 pm.

There will be quizzes in class in lieu of homework. You are expected to come to class on time, and at random intervals, I will either assign short quizzes at the beginning of class or will call upon an individual. I will arrange the class roll so that everyone on the roll will be called upon at least once during the course of the semester. If I call upon you, and you are not there or are late for class that day, you will lose that fraction of the potential quiz/participation grade. A quiz will not be given to students who are not present at the time I begin to hand it out.

Sample programs are located in the /home/csce590/public directory on daniel.

Programming assignment 1 (ps, pdf) is due 15 September 2004.

Programming assignment 2 (ps, pdf) is due 11 October 2004.

Programming assignment 3 (ps, pdf) is due 27 October 2004.

Programming assignment 4 (ps, pdf) is due 17 November 2004.

Programming assignment 5 (ps, pdf) is due 1 December 2004.


Grading scheme

The final grade will be computed on the basis of the weighted average of the scores for

  • quizzes (10%),
  • the midterm exam (20%),
  • the programming assignments (40%),
  • the final exam (30%).

The final grades will almost certainly be curved, but you should expect no lower a grade than you would receive under the usual 90/80/70/60/50 scheme.

For all students, there will be four (probably four) programming assignments plus a larger programming project. For graduate students, there will be an additional requirement of what amounts to a research proposal for funding for the continuation of your programming project. You should use as a guide the Grant Proposal Guide of the NSF for how to write proposals. You may write the proposal as if it were to be submitted to any of the directorates in your discipline area (e.g, CISE, Math and Physical Sciences, Engineering, etc.).

Under controlled circumstances I will accept group projects provided I have a written statement in advance from all members of the team that they will accept one grade given to the project and assigned uniformly to all members of the team. (That is, I will insist that I have in writing that I am not expected to adjudicate after the fact whether all members of the team contributed equally to the final result and the final grade.)

Term project proposals will be due on Wednesday, 13 October 2004. The term projects and the funding proposals (by graduate students) are due on Monday, 6 December 2004.

The programming project will be a substantial activity investigating in depth some aspect of parallel or large scale computation. The choice of topic is up to you, subject to my approval. Topics could include any of the case study topics done in class. You will be required to turn in to me for my approval by 13 October 2004 a proposal of your term project. Any subsequent substantial changes to your term project will need my explicit approval after written submission of the changes to be made.

ADDITIONAL MINIMAL STANDARD: In addition to the above point distribution scheme for grades, it is to be noted that the term projects are mandatory, and that "satisfactory" performance on the term projects (with the definition of "satisfactory" to be determined subjectively by me) is necessary in order to receive a grade of C or better in this course. Doing well on all other parts contributing to the point total and failing to turn in satisfactory project work will lead to a grade of D or F.


Lecture notes, slides, and pointers

(Caveat: Any lecture notes I prepare may well change during the lecture process; if you print them too early and too often you may use up your print quota.)

Note: The lecture notes that I prepare with Latex are done to fit the screen. In order to make maximal use of screen space, I have moved text into the margins of the page, and I have not been able to find a way to print the text that is in these margins. I include the postscript versions of these slides because they seem to display better on the screen (at least on all my screens). If you wish to print hard copy, you should pull up the pdf version and then print after choosing the pdf print option that lets you adjust the print window to include the full slide.


Links to other sites


Deadlines

Programming assignments will have due dates. Unless otherwise specified, these will be turned in by the beginning of the class period on the due date. Late assignments will not be accepted without prior arrangement to accommodate truly extraordinary circumstances.


Academic Honesty

Assignments and examination work are expected to be the sole effort of the student submitting the work. Students are expected to follow the Code of Student Academic Responsibility found in the Carolina Community and should expect that every instance of a suspected violation will be reported. Students found guilty of violations of the Code will be subject to academic penalities under the Code in addition to whatever disciplinary sanctions are applied.

There seems to be a widespread misunderstanding of the concept of "your own work." In addition to the USC Code, some good sources of text for what is or is not acceptable behavior are the academic honesty policy statement from Harvey Mudd College, the policy statement from Professor Steven Huss-Lederman at Beloit College, and the text of part of the collaboration policy statement from MIT. You can expect your programming assignments to be checked against those turned in by other members of the class as well as code that I can find on the web. I expect the correlations between your work and that of others to be minimal.

A sample first-offense admission can be found at admission.


Proper Use of Computing Resources

Students are expected to be aware of the university policy on use of computing resources, including the Student Guidelines for Responsible Computing, as well as the college and departmental policies on proper use of computing resources. Every instance of a suspected violation will be reported. Students should be aware that neither the instructor nor the department are responsible for making alternative arrangements should improper use leading to revocation of access to departmental or college resources make it impossible for you to complete the programming assignments on time.


On the nature of academic work

Students might also find relevant an essay from a professor at Georgia Tech.