Math 447/627 - Introduction to Parallel Computing

Fall 2022 - Syllabus - Matthias K. Gobbert


This page can be reached via my homepage at http://www.umbc.edu/~gobbert.

Presentations of the Class Projects

The presentations of the class projects will be on Tuesday, December 20, 2022, 01:00 p.m., in Webex. Please follow the link to the Program for the titles and abstracts. Just like for seminar talks, everybody is welcome to attend! If you wish to come, e-mail me at gobbert@umbc.edu and I will invite you to the Webex meeting.


Basic Information


Course Description

Parallel computing has become an 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 pooling the memory from several processors, problems of previously unsolvable size can now be tackled in reasonable time.

This course will introduce the basic aspects of parallel programming and the algorithmic considerations involved in designing scalable parallel numerical methods. The programming will use MPI (Message Passing Interface), the most common library of parallel communication commands for distributed-memory clusters with multi-core CPUs. Several application examples will demonstrate how parallel computing can be used to solve large problems in practice. We will also consider the options for taking advantage of shared memory architectures by OpenMP multi-threading and consider using state-of-the-art massively parallel GPUs (graphics processing units) as accelerators.

Registered students in this course will gain access to the cluster in the UMBC High Performance Computing Facility (HPCF; hpcf.umbc.edu). This class is also intended to familiarize you with this cluster, if you expect to use it for your research in the future. One of the side benefits of this class is to help in the creation of a user community on campus.

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

Philosophical Underpinning

To provide some context of the more formal learning goals above, I am sharing some deeper thoughts how we fit into the grander scheme of things. The rationale of a state university is to provide a well-educated workforce to the companies in the State of Maryland as well as to the state and local governments themselves. On a fundamental level therefore, you need to able to learn new material as well as have demonstrated evidence of this ability. These are the fundamental purposes of university courses. This requires us to engage in the learning itself and its demonstration; I am trying to say that it is not the solution to a problem that we are after, and in broader thinking it is not even the solution process, but it is your active struggle to learn that we must encourage. This leads me to the following philosophical grade rubric: To earn a passing grade, you need to solve the problem correctly. To earn a good grade, you need to solve the problem correctly and present the solution process completely and professionally. To earn a very good grade, you need to do these and additionally prove that your solution is correct. This rubric comes from the fact that neither you as customer would be willing to accept a faulty solution or unprofessional or incomplete presentation, nor would the companies in the State be served by faulty solutions. These are some of the guiding principles behind my teaching.


Other Information


Note on Recordings and Their Publication

This class is being audio-visually recorded so students who cannot attend a particular session and wish to review material can access the full content. This recording will include students' images, profile images, and spoken words, if their camera is engaged and their microphone is live. Students who do not consent to have their profile or video image recorded should keep their camera off and not use a profile image. Likewise, students who do not consent to have their voice recorded should keep their mute button activated and participate exclusively through alternative formats such as email or the chat feature (where available).


UMBC Statement of Values for Academic Integrity

Academic integrity is an important value at UMBC. 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. Consult the the UMBC webpage on Academic Integrity at academicconduct.umbc.edu for the UMBC Undergraduate Student Academic Conduct Policy for undergraduate students and the UMBC Graduate School's Policy and Procedures for Student Academic Misconduct for graduate students.


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