CSE 548: High Performance Computing II
Spring 2023 Syllabus

Matthew G. Knepley
211A Capen Hall knepley@buffalo.edu

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.

1 Course Information

Instructor Matthew G. Knepley
Class times12:30pm to 1:50pm on Tuesday & Thursday
Location Davis 113A

2 Required and Recommended Reading

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.

3 Student Learning Outcomes

4 Schedule

4.1 Week 1: Overview 1/30

4.1.1 Lecture 1a: Course Outline and Structure

We will go over the course overview and syllabus. We will discuss as a class what topics we will focus on this semester.

4.1.2 Lecture 1b: Projects

We discuss the course projects. Student proposals for alternative projects should be made on the week projects are assigned.

4.2 Week 2: Software Management 2/6

4.2.1 Lecture 2a: Version Control

We review version control.

Online resources

4.2.2 Lecture 2b: Distributed version control

We look at options for hosting, automated code testing (continuous integration), and contributing to open source projects.

Online resources

4.3 Week 3: PETSc I 2/13

4.3.1 Lecture 3a: Configuring and building

Everyone will configure and build PETSc on their machine. Please bring laptops.

Online resources

4.3.2 Lecture 3b: Running

We run PETSc examples, and use command line options to control them.

4.4 Week 4: Linear Algebra 2/20

4.4.1 Lecture 4a: Linear Algebra

We discuss parallel linear algebra. Project I is assigned.

Online resources

4.4.2 Lecture 4b: Implementation

We discuss the PETSc implementation of linear algebra, including sparse matrices, data access and encapsulation, and type management.

4.5 Week 5: Individual Study 2/27

Students will work on Project I.

4.5.1 Lecture 5a: No lecture

4.5.2 Lecture 5b: No lecture

4.6 Week 6: Performance Analysis 3/6

4.6.1 Lecture 6a: Scaling

We review strong and weak scaling, arithmetic intensity, and other performance metrics.

Online resources

4.6.2 Lecture 6b: Measuring Scaling

We collect performance data for project codes and venture some analysis.

4.7 Week 7: Project I 3/13

4.7.1 Lecture 7a: Project Discussion

Students discuss projects with the instructor.

4.7.2 Lecture 7b: Project Presentation

Students present a short overview of their project to the class.

4.8 Week 8: Spring Recess 3/21

4.8.1 Lecture 8a: No lecture

4.8.2 Lecture 8b: No lecture

4.9 Week 9: Nonlinear Solvers I 3/27

4.9.1 Lecture 9a: Successive Substitutions

We review the method of successive substitutions and Picard’s method.

4.9.2 Lecture 9b: Newton’s Method

We review Newton’s method, and the impact of preconditioning.

4.10 Week 10: Meshing 4/3

4.10.1 Lecture 10a: Meshing

We load, generate, and output meshes in PETSc. We also look briefly at discretization technology.

4.10.2 Lecture 10b: Adaptive Meshing

We look at how to adapt, refine, and transform meshes.

4.11 Week 11: Nonlinear Solvers II 4/10

4.11.1 Lecture 11a: Preconditioning and Solver Composition

We review solver composition and elementary preconditioning.

4.11.2 Lecture 11b: Nonlinear Preconditioning

We demonstrate nonlinear preconditioning, in particular nonlinear elimination.

4.12 Week 12: Discretization 4/17

4.12.1 Lecture 12a: Finite Differences

We review the basics of the finite difference method

4.12.2 Lecture 12b: Finite Elements

We review the basics of the finite element method

Online resources

4.13 Week 13: Project Workshop 4/24

4.13.1 Lecture 13a: Project Workshop

The instructor and students offer suggestions and routines to improve class projects.

4.13.2 Lecture 13b: Project Workshop

The instructor and students offer suggestions and routines to improve class projects.

4.14 Week 14: Convergence 4/24

4.14.1 Lecture 14a: Defining convergence

We discuss measures of convergence rate for linear and nonlinear iterations.

4.14.2 Lecture 14b: Measuring convergence

We measure convergence for linear and nonlinear solvers.

4.15 Week 15: Final Project Presentations 5/8

4.15.1 Lecture 15a: Presentations

Students give a final presentations of their project results.

4.15.2 Lecture 15b: Presentations

Students give a final presentations of their project results.