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 | Davis 113A |
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.
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 review version control.
Online resources
We look at options for hosting, automated code testing (continuous integration), and contributing to open source projects.
Online resources
Everyone will configure and build PETSc on their machine. Please bring laptops.
Online resources
We run PETSc examples, and use command line options to control them.
We discuss parallel linear algebra. Project I is assigned.
Online resources
We discuss the PETSc implementation of linear algebra, including sparse matrices, data access and encapsulation, and type management.
Students will work on Project I.
We review strong and weak scaling, arithmetic intensity, and other performance metrics.
Online resources
We collect performance data for project codes and venture some analysis.
Students discuss projects with the instructor.
Students present a short overview of their project to the class.
We review the method of successive substitutions and Picard’s method.
We review Newton’s method, and the impact of preconditioning.
We load, generate, and output meshes in PETSc. We also look briefly at discretization technology.
We look at how to adapt, refine, and transform meshes.
We review solver composition and elementary preconditioning.
We demonstrate nonlinear preconditioning, in particular nonlinear elimination.
We review the basics of the finite difference method
We review the basics of the finite element method
Online resources
The instructor and students offer suggestions and routines to improve class projects.
The instructor and students offer suggestions and routines to improve class projects.
We discuss measures of convergence rate for linear and nonlinear iterations.
We measure convergence for linear and nonlinear solvers.
Students give a final presentations of their project results.
Students give a final presentations of their project results.