Math 447 - Introduction to Parallel Computing

Summer 2010 - Matthias K. Gobbert and Nagaraj K. Neerchal

This page can be reached via my homepage at
This senior-level three-credit course is integrated with the NSF-funded REU Site: Interdisciplinary Program in High Performance Computing. The participants of the REU Site will take this course as part of their program. Several additional seats are available to the general public as part of UMBC's Summer Program. See the bullet on Schedule below for an explanation of the detailed schedule of class meetings for this course. This course is set up as consent required course. Please contact the instructor for questions and for permission at as soon as possible. Notice that the class meetings start on June 21, 2010, but since the class is set up as a 12-week summer session, you must register much earlier, namely by June 1, 2010, to avoid issues with a late fee.

Basic Information


In recent years, 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 resources in the UMBC High Performance Computing Facility (HPCF; Installed in Fall 2009, the current machine is the 86-node distributed-memory cluster tara with two quad-core Intel Nehalem processors and 24 GB per node, an InfiniBand interconnect, and 160 TB central storage.

The class will include an efficient introduction to the Linux operating system as installed on the HPCF cluster, 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:

Other Information

UMBC Academic Integrity Policy

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, the UMBC Integrity webpage, or the Graduate School website

Copyright © 2001-2010 by Matthias K. Gobbert. All Rights Reserved.
This page version 2.0, June 2010.