In this course, students use the skills learned in HPC I to build a lasting software artifact, intended to benefit a broader community. We will cover software management, such as version control, hosting, and continuous integration, in addition to algorithmic topics, such as mesh and discretization management, algebraic solvers, and scalable communication.
| Instructor | Matthew G. Knepley |
| Class times | 12:30pm to 1:50pm on Tuesday & Thursday |
| Location | Baldy 105 |
Class notes have been prepared for each class, and the lecture will follow the notes. Extensive class notes are also available from the Computational Science I companion course. Students may read over the class notes prior to attending lecture, but it may deviate from the notes somewhat.
We will use the PETSc libraries as a foundation for software development. An optional textbook, PETSc for Partial Differential Equations by Ed Bueler of the University of Alaska Fairbanks, is available from the SIAM Bookstore or Google Play. It is the best resource for learning the advances features of PETSc.
Students will be capable of managing a software repository with multiple developers
Students will be capable of constructing a build system for a software package
Students will be capable of continuous integration testing
Students will be capable of choosing an effective linear solver for a system of algebraic equations
Students will be capable of modeling parallel performance
Students will be capable of analyzing parallel scaling
All work submitted for this course must be your own. As a result, any use of generative AI (e.g., ChatGPT or Grammarly) is prohibited in this class and will be considered a violation of UB’s academic integrity policy. Details of what resources are allowed will be provided for each assignment. If you are unsure if a resource or tool is allowable, be sure to ask.
We will go over the course overview and syllabus. We will discuss as a class what topics we will focus on this semester.
We discuss the course projects. Student proposals for alternative projects should be made on the week projects are assigned. We will also go over the pieces of the Project Report.
We will setup source management and hosting, and look at library dependencies.
We review version control.
Online resources
Really fantastic graphical, interactive Git Branching Tutorial
We setup project version control, SSH access, and look at source evaluation tools.
Online resources
PETSc guide for contributing code to the repository and integrating your contribution into the release.
Students will work on Project I.
We discuss Configure, Make, Automake, CMake, Meson, and other build tools.
We assemble a build environment for projects.
Homework 1: Turn in Project Introduction.
Students will write a one page project description, including its relevance to high performance computing. In addition, they will construct a weekly schedule for project development and testing, and a set of performance milestones.
Everyone will configure and build PETSc on their machine.
Online resources
The PETSc installation instructions
The PETSc manual pages and tutorials are probably the most helpful resources for new users.
Good introduction to PETSc
We discuss parallel linear algebra. Project I is assigned.
Online resources
Using MPI is a good introduction to parallel programming and has many linear algebra examples.
Linear Algebra: Foundations to Frontiers is an excellent multimedia introduction to parallel linear algebra.
We discuss the PETSc implementation of linear algebra, including sparse matrices, data access and encapsulation, and type management.
Homework 2: Turn in Project Background.
We discuss the LogP model paper.
Online resources
This paper describes a new model (in 1993) for assessing parallel communication.
We setup our code to measure parallel communication.
We discuss the paper on modeling and optimizing collective communication.
Online resources
This paper describes a model for collective communication that they use to optimize the implementation.
Students model communication in their project and think about possible optimizations.
We discuss the paper on modeling synchronization in Krylov methods.
Online resources
This paper describes a model for synchronization in Krylov methods. This paper has more experiments.
Students look at the synchronization cost in their projects and think about strategies to mitigate it.
Homework 3: Turn in Project Methodology.
We discuss the paper on node-aware communication.
Online resources
This paper describes a model for parallel communication that takes into account modern architectures.
Students will benchmark parallel communication in their projects.
We discuss the paper on communication in the multigrid algorithm
Online resources
This paper discusses modeling and optimizing communication in multigrid.
Students profile solver performance in their projects and think about possible optimizations.
We discuss the paper on network topology for AI training.
Online resources
This paper discusses network topology for AI training.
Students compute the effect of a different topology for comunication in their project, using a communication performance model.
Homework 4: Turn in Project Results and Conclusions.
Students give a final presentations of their project results.
Students give a final presentations of their project results.
We evaluate the class and discuss improvements.