High Performance Computing
Contents
High Performance Computing#
In diesem Skript geht es um die hoch performante Ausführung von Berechnungen. Damit verstehen wir hauptsächlich die parallele Ausführung von Programmen im Gegensatz zur sequentiellen Programmen. Das klingt erst mal sehr generisch und lässt sich vielleicht besser durch eine Reihe von Abgrenzungen verstehen:
Worum geht es nicht (nur) |
Worum geht es |
Beispiel / Zitat |
---|---|---|
Supercomputer |
Parallele Berechnung - mittlerweile und auf absehbare Zeit der signifikanteste Leistungstreiber auch bei Endnutzergeräten |
128-Kern GPU im 99-Euro-SoC Jetson Nano, iPad in 2021 mit 8 CPU-Kernen, 8 GPU-Kernen (1024 ALUs, 24,576 Threads) und 16-Kern “Neural Engine” |
Extreme Aufgaben (z.B. Simulation des globalen Klimas, des Urknalls, …) |
Aufgaben, die von Parallelisierung profitieren oder aufgrund von Hardwarevorgaben, Energieeffizienz und Zeitbeschränkungen nur parallel gelöst werden können |
“It takes a big man to admit his data is small” - Hadley Wickham |
Maximale Ausreizung der Performance für bestimmte Probleme |
Verständnis von parallelen Programmiermodellen - eine automatische Parallelisierung von sequentiellen Code ist bisher nicht vergleichbar |
Nutzung der sum()-Methode in numpy statt manuelle Programmierung eines for-each-loop über ein Array |
Verarbeitung einzelner Transaktionen - auch wenn es extrem viele sind |
Die gesamthafte Lösung eines zusammenhängenden Problems |
Es geht nicht um die Bestellungsverarbeitung für einen globalen Online-Händler aber es könnte um die Analyse aller Bestellungen gehen |
Nutzung von verfügbarer Hardware |
Verschiedene Technologiekonzepte |
Von Interesse sind eher die Möglichkeiten eines 8 QuBit Quantencomputers als die Performance, die beim Umstieg von 1.000 auf 10.000 GPUs zu erwarten ist |
Note
Dieses Skript dient als Begleitmaterial zur Vorlesung High Performance Computing (HPC) an der HFT Stuttgart. Das Skript ist noch in der Entstehung und ist als Ergänzung zum weiteren Vorlesungsmaterial zu verstehen. Feedback und weitere Anregungen sind stets willkommen.
Weiterführende Quellen: Empfehlungen und Grundlagen#
Die folgenden empfehlenswerten Quellen wurden für die Erstellung dieses Skripts verwendet:
“Parallel and High Performance Computing”, Robert Robey and Yuliana Zamora, Manning Publications, 2021
“Programming Massively Parallel Processors, 3rd Edition”, David Kirk and Wen-mei W. Hwu, Morgan Kaufmann, 2016
“Applications of Parallel Computers”, Aydin Buluc and Jim Demmel and Kathy Yelick, Kurs CS267 der UC Berkeley, Spring 2021, Online verfügbar: https://sites.google.com/lbl.gov/cs267-spr2021/home
“High-Performance Scientifc Computing”, Andreas Kloeckner and Marsha Berger, Kurs NYU, Fall 2012, Online verfügbar: https://andreask.cs.illinois.edu/Teaching/HPCFall2012/
“A Beginner’s Guide to High–Performance Computing”, Rubin H Landau, http://www.shodor.org/media/content/petascale/materials/UPModules/beginnersGuideHPC/moduleDocument_pdf.pdf, abgerufen am 30.06.2021
“Introduction to High Performance Scientific Computing, 3rd Edition”, Victor Eijkhout with Edmond Chow, Robert van de Geijn, 2020, https://web.corral.tacc.utexas.edu/CompEdu/pdf/stc/EijkhoutIntroToHPC.pdf
“Seven Concurrency Models in Seven Weeks”, Paul Butcher, Pragmatic Bookshelf, 2014
Weitere Quellen insbesondere für einzelne Beispiele sind im Skript vermerkt.