HELMHOLTZ extrem
Der schnellste Code der Laser-Plasmaphysik
Superschnell, skalierbar und gratis – was als „Jugend forscht“-Projekt begann, ist heute einer der leistungsfähigsten Programmcodes für Berechnungen in der Astro- und Plasmaphysik.
Solche aufwendigen 3D-Simulationen sind nötig, weil extrem komplexe Prozesse in sehr kurzen Zeiträumen untersucht werden: Wenn am HZDR-Institut für Strahlenphysik ein hunderte Billionen Watt starker Laser auf eine Folie trifft, entsteht ein Gemisch aus Billiarden von Elektronen und Ionen – ein Hoch-Energie-Plasma. Dieser Vorgang läuft in Femtosekunden-Bruchteilen ab, also ungefähr in der Zeit, in der ein Elektron den Atomkern umrundet. Um die Wechselwirkungen zwischen den Teilchen im Plasma in einem Modell darzustellen, braucht es viel Rechenpower und einen effizienten Programmcode. Die Grundlage liefert der am HZDR entwickelte Code PIConGPU: „Damit können wir selbst ein individuelles Teilchen unter 100 Milliarden Elektronen verfolgen und seinen Einfluss auf das Gesamtsystem berechnen“, erklärt Dr. Michael Bussmann, Leiter der Nachwuchsgruppe für Computergestützte Strahlenphysik.
Der Code basiert auf der sogenannten „Particle-in-Cell“-Methode (PIC): Dabei werden Differentialgleichungen gelöst, die die Wechselwirkung elektromagnetischer Felder mit geladenen Teilchen wie Elektronen und Ionen in einem virtuellen räumlichen Gitter beschreiben. So erfahren die Plasmaphysiker, wie sich die Partikel in den Zellen des 3D-Gitters bewegen und auf die Felder zurückwirken. Doch die Dresdner Wissenschaftler lassen die PIC-Prozeduren nicht wie sonst üblich von normalen Hauptprozessoren durchführen, sondern nutzen die Recheneinheiten von Grafikkarten – sogenannte GPUs. Dieses GPU-Computing bietet einen entscheidenden Vorteil, wie Michael Bussmann erklärt: „Moderne Grafikkarten können viele Rechenschritte parallel ausführen und berechnen die Prozesse im Teilchen-Chaos des Plasmas daher schneller als Hauptprozessoren.“ Da der Supercomputer Titan ebenso wie das HZDR-Rechenzentrum auf GPUs setzt, konnte der Dresdner Code schnell für die Simulationen am amerikanischen Großrechner fit gemacht werden.
Der Clou dabei ist die starke Skalierbarkeit des Codes. Das heißt, die Rechenleistung des Codes steigt proportional zur Anzahl der eingesetzten Grafikkarten. Keine Selbstverständlichkeit, wie Heiko Burau, Diplomand in Bussmanns Nachwuchsgruppe, betont: „Schon die kleinsten ungenutzten Wartezeiten bei der Datenverarbeitung führen dazu, dass ein Großteil der GPU-Leistung verpufft.“ Für eine maximale Leistung müssen die Grafikprozessoren also möglichst unabhängig voneinander arbeiten. Da tausende Karten gemeinsam an den Modellen rechnen, ergab sich somit eine Herausforderung: Wie kompensiert man die langsame Daten-Weitergabe zwischen den einzelnen Grafikkarten? Die simple, aber effektive Lösung: Schon während der Übertragung zu anderen Karten beginnen neue Berechnungen. So wird die Wartezeit sinnvoll genutzt und alle Grafikkarten arbeiten parallel.
Heiko Burau ist zugleich auch der Erfinder von PIConGPU: Nach einer Auszeichnung beim Schüler-Wettbewerb „Jugend forscht“ erhielt er 2009 die Möglichkeit, zu seinem Thema „Grafikkarten-Programmierung“ am HZDR zu forschen. Bereits nach sechs Wochen hatte er mit den anderen jungen Forschern der Gruppe die erste Version des Codes für eine Einzel-GPU programmiert. Schritt für Schritt entwickelte die Nachwuchsgruppe schließlich den heute leistungsfähigsten Code der Laser-Plasmaphysik.
Michael Bussmann lobt zudem die Flexibilität des Codes: „Ob kosmische Jets in der Astrophysik, die Untersuchung von lasergetriebener Fusion oder Laser-Teilchenbeschleunigung – unser Code kann mittlerweile fast alle Berechnungen durchführen in denen Hoch-Energie-Plasmen eine Rolle spielen.“ Das liegt nicht zuletzt daran, dass es ein Open-Source-Code ist, der von jedem Wissenschaftler kostenlos genutzt und für die eigene Forschung angepasst werden kann. Die HZDR-Forscher sind überzeugt, dass gegenseitiger Wissensaustausch die Entwicklung von PIConGPU noch weiter vorantreibt, weshalb sie offensiv auffordern: „Bitte klauen Sie diesen Code!“
Leser:innenkommentare