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
|
|
|
|
CSCE 569 web page
|
|
|
Class meeting time: MW 2:30-3:45, SWR 2A15
Office hours: MW 1:00-2:30, SWR 3A01
|
|
|
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.
|
|
|
|
|