Go back to overview

Practical Programming Course

The pro­gramming lab course on Paral­lel Nu­meri­cal Methods is one of the core mod­ules of the mas­ter pro­gram "Sci­en­tific Com­puting". The goal of this inter­disci­pli­nary course is to link the con­tents of dif­ferent lec­tures. For this pur­pose, the stu­dents im­ple­ment­ed a C++ li­brary for the paral­lel solu­tion of large di­men­sional linear sys­tems.

First week: The basis of good software development

Once again, the Prac­tical Course on Paral­lel Nu­meri­cal Methods had to take place in an online for­mat. Alt­hough this meant that the com­mon lunch and coffee breaks in the can­teen were miss­ing, the par­tici­pants were able to use the new ENB clus­ter of the Uni­versi­ty of Bay­reuth, which went online two months earli­er. With twelve CPU nodes and one GPU node with a pow­erful graphics card, this com­puter is ideal­ly suited for memory-intensive tasks in the field of high-perfor­mance com­puting and artifi­cial intel­li­gence. The inte­gra­tion of this "su­percomput­er" took place with­in the HPC re­search cen­ter of the Uni­versi­ty of Bay­reuth.

In the morn­ings, the theo­reti­cal basics were brief­ly intro­duced in lec­tures. De­pend­ing on the prior expe­rienc­es of the stu­dents of the Elite Grad­uate Pro­gram “Scientific Computing”, these were new topics or short repe­ti­tions. In the first week the basics of good soft­ware de­velopment in the field of "Sci­en­tific Com­puting" were laid. Among oth­ers, the dis­cuss­ed topics in­clud­ed the ques­tion how to create and main­tain good code with the help of mod­ern soft­ware de­velopment tools.

Fol­low­ing the prac­tical phi­loso­phy of this course, the stu­dents spent most of their time im­ple­ment­ing, test­ing, and ana­lyzing their pro­ject of a C++ li­brary for solv­ing large di­men­sional linear sys­tems.

Second week: Parallel programming

In the sec­ond week, the par­tici­pants paral­lelized their pro­grams. This al­lowed them to sig­nifi­cantly re­duce com­puta­tion times. How­ever, the stu­dents also expe­rienced that paral­lel pro­grams are chal­leng­ing to write. Errors ap­peared that they had not pre­vious­ly en­coun­tered. They learned that soft­ware de­velopment con­sists to a large extent of de­bug­ging.

In the last part of the prac­tical course, the stu­dents used the ENB-cluster to inves­tigate the per­for­mance of their pro­grams on mod­ern su­percomput­ers. Among oth­er things, they exam­ined whether or how their code scales with the num­ber of pro­ces­sors. The re­sults of their anal­yses and the presenta­tion of their im­ple­men­ta­tions were the con­tent of the final presenta­tions.

Text: Thomas Rau, Su­pervi­sor of the pro­gramming prac­tical course "Par­allel Nu­meri­cal Methods" in the Elite Grad­uate Pro­gramm “Sci­en­tific Com­puting”.