Introduction to Parallel Computing
Universität Kassel - Wintersemester 2011/2012
Matthias K. Gobbert - University of Maryland, Baltimore County
This page can be reached via the Teaching area of my homepage at
http://www.math.umbc.edu/~gobbert.
Basic Information
- Instructor: Matthias K. Gobbert, University of Maryland, Baltimore County,
on sabbatical leave at the Universität Kassel
from November 2011 to June 2012.
Office AVZ Room 2431,
office hour Wednesdays 14-15,
e-mail gobbert@umbc.edu.
- The lectures and associated computer labs are listed as
Vst.-nr. FB1017.2897w and FB1017.2898w, respectively,
in the
Vorlesungsverzeichnis of Wintersemester 2011/2012.
The course is taught as 4+2 SWS for half of the
Wintersemester 2011/2012, starting December 05, 2011,
thus it counts as 2+1 SWS; see the
Vorlesungsverzeichnis for more information.
To accomodate all interested students,
we made changes to the times and rooms for both
lectures and labs:
Lectures Mondays 09-11 AVZ Room 2404 and Wednesdays 15-17 AVZ Room 1403;
Labs Tuesdays 09-11 and 13-15 AVZ Room 2421 (computer lab).
See the outline of the contents of the course
and the updated detailed schedule
of the lectures and computer labs,
with attached postings of class summaries, PDF transcripts, and postings.
The latter area is restricted to participants in the course.
To access the area, just follow the link and then enter the
username and password that will be supplied to you.
- Prerequisites: Numerik I,
fluency in programming C, C++, or Fortran and
proficiency in using the Unix/Linux operating system,
or consent of instructor
- Books on parallel computing and the programming language C:
-
Required textbook on parallel computing:
Peter S. Pacheco,
Parallel Programming with MPI,
Morgan Kaufmann, 1997.
Associated webpage:
http://www.cs.usfca.edu/~peter/ppmpi.
We will have explicit reading assignments for
several chapters from this book,
specifically at least Chapters 3-5,
in the first weeks of the course.
The book can be checked out in Room 2410 for two hours at a time.
-
Recommended book on the programming language C:
Brian W. Kernighan and Dennis M. Ritchie,
The C Programming Language,
second edition, Prentice-Hall, 1988.
Associated webpage:
http://cm.bell-labs.com/cm/cs/cbook/.
This is the classic book on C written by its creators.
You can use other books or internet resources instead.
I will strive to explain all necessary C in class,
but some additional resources may be convenient to have.
- Grading policy:
Homework and Quizzes
| Participation
|
90%
| 10%
|
-
The homework includes
the computer assignments that are vital to understanding
the course material.
A late assignment accrues a deduction of
up to 10% of the possible score
for each day late until my receiving it;
I reserve the right to exclude any problem from scoring
on late homework, for instance, if we discuss it in class.
The quizzes will generally be unannounced and brief and
will include the use of learning groups formed by the instructor.
For instance, they may be designed to initiate class discussion
or to give me feedback on your learning.
They may be technical or non-technical in nature.
-
The graded participation component rewards
your professional behavior and active involvement
in all aspects of the course.
Examples of expected professional behavior include
attending class regularly,
reading assigned material when requested,
cooperating with formal issues such as
submitting requested material on time, and
participating constructively in class, specifically in group work.
In this course, professional behavior also includes
adhering to good user behaviors on the shared
computing facilities that you will work on.
Additional details or changes will be announced as necessary.
- Homework submission:
Each homework is to be submitted as one single PDF file attached to an e-mail
to gobbert@umbc.edu, with the attachment name to include
both the number of the homework and your unique name.
For example, if your name were Peter Smith,
the submission of Homework 2 would use the filename "HW2_Smith.pdf".
Please include your name also in the Subject field of the e-mail,
such as "HW 2 from Peter Smith".
If there are several student with same last name in class,
include first name after the last name such as "HW2_SmithPeter.pdf".
If your last name is very long, consider abbreviating it.
If in doubt, contact me about these issues;
the goal is to have clear and unique filenames.
Please also make sure that the From field of your e-mail shows your
full name clearly, not just your username or some other internet handle;
to guard against confusion about the sender of the mail,
I require the name in the Subject field above.
The contents of e-mail for homework submission should be essentially
empty, since I have no way to integrate this with your PDF file;
make sure that all contents for grading is in the PDF attachment!
But a sensible, short message, signed by your full name is
of course useful to guard against misunderstandings.
Please submit each homework only once; if you send several copies,
I cannot guarantee which one I end up grading.
Course Description
This course will be followed by the course
Parallel Computing for Partial Differential Equations
and the seminar
Applications of Parallel Computing
in Sommersemester 2012.
Parallel computing has become an almost ubiquitous
way to perform computer simulations involving large amounts of data or
intensive calculations. The basic purpose of using several processors
is to speed up computations of large problems by distributing the
work. But large problems typically involve vast quantities of data
as well; by distributing the data across several processors, problems
of previously unsolvable size can now be tackled in reasonable time.
This course will both introduce the basic aspects of parallel programming
and the algorithmic considerations involved in designed scalable
parallel numerical methods.
The programming will use MPI (Message Passing Interface),
the most common library of parallel communication commands today for
any type of parallel machine architecture.
We will discuss several application examples in detail
that show how parallel computing can be
used to solve large application problems in practice.
Registered students in this course will gain access to the
cluster computing resources of the
IT Servicezentrum at the Universität Kassel.
The class will include an efficient introduction to the Linux operating
system as installed on the cluster being used, and it will include
a review of serial programming in the source code language C
that is integrated into the initial presentation of sample codes.
This review assumes some experience with compiling and debugging
in a high-level source code programming language.
It will only include a restricted set of features of C, but these are
selected to be sufficient for work on the homework assignments in the class.
Learning Goals
By the end of this course, you should:
-
understand and remember the key ideas, concepts, definitions,
and theorems of the subject.
Examples include understanding the purpose of parallel computing
and why it can work, being aware of potential limitations,
and knowing the major types of hardware available.
This information will be communicated in class and in the
textbook, but also in additional reading.
--> This information will be discussed in the lecture as well as
in the textbook and other assigned reading.
-
have experience writing code for a Linux cluster using MPI in C, C++,
and/or Fortran that correctly solves problems in scientific computing.
The sample problems are taken from mathematics and your code has to
compile without error or warning, run without error,
and give mathematically correct results first of all.
In addition, it needs to run on a Linux cluster without error
and you need to be able to explain its scalability, i.e.,
why or why not it executes faster on several processors than in serial.
We will have problems stated in different ways and from various
sources to provide you with exposure to as many issues as possible.
--> This is the main purpose of the homework and most
learning will take place here.
-
have gained proficiency in delivering code written by you to others
for compilation and use.
This includes the concept of providing a README file that gives
instructions how to compile and run the code as well as
of providing a sample output file to allow the user to check the results.
We will work together in class to discuss best practices to transfer code
for homework problems of increasing complexity.
--> You will submit your homework code by e-mail to the instructor
and it needs to compile and run in parallel for credit; this is
complemented by a report that shows and explains your results.
-
have some experience how to learn information from a research paper
and to discuss it with peers.
Group work requiring communication for effective collaboration
with peers and supervisors is a vital professional skill,
and the development of professional skills is a declared learning goal
of this course.
--> I will supply some research papers carefully
selected for their readability and relevance to the course.
Learning from research papers is a crucial skill to develop.
Other Information
Copyright © 2001-2012 by Matthias K. Gobbert. All Rights Reserved.
This page version 3.0, April 2012.
Updated link to summary area 05/22/14 MGo.