Kurserna i metoder och verktyg för att programmera parallelldatorer respektive programmering av flerkärniga processorer samt grafikprocessorer, GPU:er, fylls snabbt trots att ingen av dem är obligatorisk att läsa. Jakob Bertlin, som läser medieteknik, Linus Sjöström, blivande civilingenjör i informationsteknologi och Oscar Holm som läser masterprogrammet i datavetenskap är mitt upp i parallelldatorkursen och så här långt ångrar de inte sitt val.
– Skalbara system och parallellisering blir allt viktigare och här får vi praktisk erfarenhet av hur programmeringen av flera kärnor och trådar går till, som att öva på att bryta ner problem i delar för att sedan kunna parallellisera lösningen. Eller hur man hanterar kommunikationen mellan processer och trådar. Fokus är inte att bara på att lösa problemet, utan att göra det på ett sådant sätt att parallelliseringen blir bra. Detta är en sådan kurs jag kan sitta med hemma på kvällarna med en kaffe och bulle, säger Oscar Holm.
Nödvändig kunskap
Alla tre är helt överens om att parallell programmering av processorkärnor är ett måste att kunna i framtiden.
– Det går inte att optimera enskilda processorer så mycket mer. Även om en enstaka process kan bli lite snabbare måste man ändå sätta ihop flera processorer för att snabba upp ytterligare. Det här är en oundviklig kunskap om man vill ligga i framkant i den här branschen, anser Jakob Bertlin.I kursen ingår ett antal laborationer där studenterna arbetar mot den nuvarande superdatorn Triolith.
– De som går kursen nu arbetar mot Triolith, men i höst går vi över till Tetralith, bekräftar Christoph Kessler, professor i datavetenskap och ansvarig för kurserna.
Kraftfullaste superdatorn
I sommar byggs Tetralith, nordens kraftfullaste superdator, upp vid Nationellt superdatorcentrum, NSC, vid Linköpings universitet. Tetralith består av 1892 servrar med 32 kärnor vardera, totalt 60 544 processorkärnor. Varje server har ett lokalt minne och utmaningen ligger både i att fördela en stor beräkning på optimalt antal kärnor och se till att kopplingarna mellan servrarna och deras respektive minnen, det interna bredbandet, fungerar så effektivt som möjligt. Parallelldatorer har sina egna programmeringsspråk och egna bibliotek av programvara som det också gäller att hitta i.
Några av servrarna i Triolith, och förhoppningsvis också i Tetralith, är även utrustade med kraftfulla och mångkärniga grafikprocessorer, GPU:er. De används exempelvis för att snabba upp bildanalys och visualisering, i simuleringar, i maskininlärning och artificiell intelligens, liksom för spelprogrammering. Även de har egna programspråk. Den kursen går på hösten och är om möjligt ännu populärare än parallelldatorkursen.
– I höstas hade vi kö till de 60 platserna, men lyckades till slut ändå få in alla som ville gå kursen, berättar Christoph Kessler.
Stor efterfrågan på kompetens
Självklart har Jacob Bertlin, Linus Sjöström och Oscar Holm anmält sig även till GPU-kursen. Det är nämligen inte bara forskningen och spelindustrin som behöver programmeringskompetens:
– Alla stora biltillverkare har grafikkort i sina bilar och de stora processortillverkarna har tagit fram skräddarsydda GPU:er för bilar, konstaterar Jakob Bertlin.
De både kurserna är annars helt fristående.
– Studenterna kan välja en eller båda och i vilken ordning som helst. Kurserna gå på engelska och är också populära bland våra utbytesstudenter som bara är här en termin eftersom den ena går på våren och den andra på hösten, säger Christoph Kessler.
Linus Sjöström ser fram emot höstens kurs:
– Det här var lite svårare än jag trodde från början. Det finns också mer att lära sig än vad jag trodde och det gör det verkligen intressant att fortsätta med nästa kurs, säger han.
Kurserna heter TDDC78 Programming of parallel computers - methods and tools respektive TDDD56 Multocore and GPU programming.