Erste Woche: Die Basis guter Softwareentwicklung
Erneut musste das Programmierpraktikum als Online-Blockkurs stattfinden. Zwar fehlten so die gemeinsamen Mittags- und Kaffeepausen in der Mensa, dafür konnten die Teilnehmer den neuen ENB-Cluster der Universität Bayreuth verwenden, der zwei Monate zuvor online ging. Mit zwölf CPU-Knoten und einem GPU-Knoten mit leistungsstarker Grafikkarte ist dieser Rechner bestens für speicherintensive Aufgaben im Bereich des High Performance Computing und der künstlichen Intelligenz geeignet. Die Eingliederung dieses „Supercomputers“ erfolgte innerhalb des HPC Forschungszentrums der Universität Bayreuth.
Vormittags wurden in Vorlesungen die theoretischen Grundlagen kurz eingeführt. Je nach Vorkenntnissen der Studierenden des Elitestudiengangs „Scientific Computing“ waren dies neue Themen oder kurze Wiederholungen. In der ersten Woche wurde die Basis guter Softwareentwicklung im Bereich „Scientific Computing“ gelegt. Es wurde nicht nur besprochen, was guten Code ausmacht, sondern auch wie man diesen mit den Werkzeugen moderner Softwareentwicklung erstellt und pflegt.
Da es sich um ein Praktikum handelt, verbrachten die Studierenden die meiste Zeit damit, ihr Projekt einer C++-Bibliothek zur Lösung groß dimensionaler Gleichungssysteme zu implementieren, zu testen und zu analysieren.
Zweite Woche: Parallele Programmierung
In der zweiten Woche parallelisierten die Teilnehmer ihre Programme. So konnten sie die Rechenzeiten deutlich verkürzen. Allerdings machten die Studierenden auch die Erfahrung, dass parallele Programme eine Herausforderung sind. Es tauchten Fehler auf, die sie bisher nicht kannten. Sie lernten, dass Softwareentwicklung zu einem Großteil aus Fehlersuche besteht.
Im letzten Teil des Praktikums nutzten die Studierenden den ENB-Cluster, um die Performance ihrer Programme auf modernen Supercomputern zu untersuchen. Sie gingen unter anderem der Frage nach, ob und wie ihr Code mit steigender Anzahl an Prozessoren skaliert. Die Ergebnisse ihrer Analysen sowie die Vorstellung ihrer Implementierungen waren der Inhalt der Abschlussvorträge.
Text: Thomas Rau, Betreuer des Programmierpraktikums „Parallele Numerische Methoden“ im Elitestudiengang „Scientific Computing“.