Zurück zur Übersicht

Paralleles Programmier-Praktikum

Das paral­lele Pro­grammier-Prakti­kum ist eines der Kernmo­dule des Mas­ter-Programms „Sci­enti­fic Com­pu­ting“. Ziel die­ses inter­dis­zipli­nären Kur­ses ist die Ver­knüp­fung ver­schiedener Vor­le­sun­gen. Dazu haben die Stu­die­ren­den eine C++-Biblio­thek zur paral­lelen Lö­sung groß­di­men­sio­naler Glei­chungssys­teme im­ple­men­tiert.

Erste Woche: Die Basis guter Softwareentwicklung

Erneut muss­te das Pro­grammier­prak­tikum als On­line-Block­kurs statt­fin­den. Zwar fehl­ten so die ge­mein­sa­men Mit­tags- und Kaf­fee­pau­sen in der Men­sa, dafür konn­ten die Teil­neh­mer den neuen ENB-Cluster der Uni­versi­tät Bay­reuth ver­wen­den, der zwei Mo­nate zuvor onli­ne ging. Mit zwölf CPU-Knoten und ei­nem GPU-Knoten mit leis­tungsstar­ker Gra­fik­karte ist dieser Rechner bes­tens für spei­cher­inten­sive Auf­gaben im Be­reich des High Per­for­mance Com­pu­ting und der künstli­chen Intel­li­genz ge­eig­net. Die Ein­glie­de­rung die­ses „Su­per­com­pu­ters“ er­folgte in­ner­halb des HPC For­schungszentrums der Uni­versi­tät Bay­reuth.

Vor­mit­tags wur­den in Vor­le­sun­gen die theo­reti­schen Grundla­gen kurz ein­ge­führt. Je nach Vor­kenntnis­sen der Stu­die­ren­den des Elite­studi­en­gangs „Scientific Computing“ waren dies neue The­men oder kurze Wie­der­ho­lun­gen. In der ersten Wo­che wur­de die Basis guter Soft­ware­ent­wick­lung im Be­reich „Sci­enti­fic Com­pu­ting“ ge­legt. Es wur­de nicht nur be­spro­chen, was guten Code aus­macht, son­dern auch wie man die­sen mit den Werkzeu­gen mo­der­ner Soft­ware­ent­wick­lung er­stellt und pflegt.

Da es sich um ein Prak­tikum han­delt, ver­brachten die Stu­die­ren­den die meis­te Zeit da­mit, ihr Pro­jekt einer C++-Biblio­thek zur Lö­sung groß di­men­sio­naler Glei­chungssys­teme zu im­ple­men­tie­ren, zu testen und zu ana­lysie­ren.

Zweite Woche: Parallele Programmierung

In der zwei­ten Wo­che paral­leli­sier­ten die Teil­neh­mer ihre Pro­gramme. So konn­ten sie die Re­chen­zeiten deut­lich ver­kür­zen. Al­ler­dings machten die Stu­die­ren­den auch die Er­fah­rung, dass paral­lele Pro­gramme eine Her­aus­for­de­rung sind. Es tauchten Feh­ler auf, die sie bis­her nicht kann­ten. Sie lern­ten, dass Soft­ware­ent­wick­lung zu ei­nem Groß­teil aus Feh­lersu­che be­steht.

Im letz­ten Teil des Prak­ti­kums nutz­ten die Stu­die­ren­den den ENB-Cluster, um die Per­for­mance ih­rer Pro­gramme auf mo­der­nen Su­per­com­pu­tern zu un­tersu­chen. Sie gin­gen unter ande­rem der Frage nach, ob und wie ihr Code mit stei­gen­der An­zahl an Pro­zes­soren ska­liert. Die Er­geb­nisse ihrer Ana­lysen sowie die Vor­stel­lung ihrer Im­ple­men­tie­run­gen waren der Inhalt der Ab­schlussvorträ­ge.

Text: Thomas Rau, Be­treuer des Pro­grammier­prak­ti­kums „Pa­ralle­le Nu­meri­sche Me­tho­den“ im Elite­studi­en­gang „Sci­enti­fic Com­pu­ting“.