2. Practical Course on Parallel Numerical Methods
The 2. practical course on parallel numerical methods took place online from 17.03.2021 - 31.03.2021 due to the corona pandemic.
Course instructor: Thomas Rau (Chair of Scientific Computing)
Participants: Students of the master's program "Scientific Computing"
The programming lab course on Parallel Numerical Methods is one of the core modules of the master program "Scientific Computing". The goal of this interdisciplinary course is to link the contents of different lectures. For this purpose, the students implemented a C++ library for the parallel solution of large dimensional linear systems.
First week: The basis of good software development
Once again, the Practical Course on Parallel Numerical Methods had to take place in an online format. Although this meant that the common lunch and coffee breaks in the canteen were missing, the participants were able to use the new ENB cluster of the University of Bayreuth, which went online two months earlier. With twelve CPU nodes and one GPU node with a powerful graphics card, this computer is ideally suited for memory-intensive tasks in the field of high-performance computing and artificial intelligence. The integration of this "supercomputer" took place within the HPC research center of the University of Bayreuth.
In the mornings, the theoretical basics were briefly introduced in lectures. Depending on the prior experiences of the students, these were new topics or short repetitions. In the first week the basics of good software development in the field of "Scientific Computing" were laid. Among others, the discussed topics included the question how to create and maintain good code with the help of modern software development tools.
Following the practical philosophy of this course, the students spent most of their time implementing, testing, and analyzing their project of a C++ library for solving large dimensional linear systems.
Figure: Code fragment from the introductory lectures to OpenMP and MPI.
Second week: Parallel programming
In the second week, the participants parallelized their programs. This allowed them to significantly reduce computation times. However, the students also experienced that parallel programs are challenging to write. Errors appeared that they had not previously encountered. They learned that software development consists to a large extent of debugging.
In the last part of the practical course, the students used the ENB-cluster to investigate the performance of their programs on modern supercomputers. Among other things, they examined whether or how their code scales with the number of processors. The results of their analyses and the presentation of their implementations were the content of the final presentations.