Numerical Linear algebra for High Performance Computing
Table of Contents
Summary
The ability to develop sustainable software is an important skill in scientific computing. The average life-cycle of software libraries can exceed hardware lifetimes by an order of magnitude. Examples of such software libraries are PETSc, Trilinos, deal.ii and many other such high performance focused libraries. These libraries are in continuous development by researchers and scientists. To ease their burden, developers adopt code practices such as unit tests, continuous integration, version control and benchmarking.
These practices while essential to the library development, can pose a significant hurdle to students and new programmers proficient in algorithms but unfamiliar with sustainable software development. To solve this issue and to help students overcome this barrier at an early stage, enabling them to contribute to software libraries, at the Karlrsruhe Institute of Technology, in our course in Numerical Linear Algebra for High Performance Computing we introduced a collaborative peer review approach of grading coding assignments.
The students are provided with a common framework for writing their exercise codes. Along with their code, they need to write unit tests, benchmark their code and push their changes to a common repository. On the submission date, their exercise code is run on the CI and merge requests are opened to merge their codes into the main repository in emulation of an actual large scale software project. Merge Requests are assigned in a round-robin fashion to the students. They are encouraged to encorporate changes from the reviews and the final approved MR is merged into the main repository.
Repository
An example of the exercise-framework is available on github.
Papers and presentations
-
A collaborative peer review process for grading coding assignments in coursework, July 2021, ICCS 2021, [paper] [slides]
-
A collaborative peer review process in grading coding assignments for HPC, Workshop on Best Practices in HPC Training and Education (BPHTE20), November 2020, Supercomputing (SC20), Presenter: Fritz Göbel, [slides] [link]