PIConGPU - Ein Multi-GPGPU Particle-in-Cell Code
PIConGPU [1,2] ist ein relativistischer Particle-in-Cell (PIC) Code für Grafikprozessoren (GPUs). Er ist Open Source und steht frei zum Download zur Verfügung [1]. PIConGPU wird von der Juniorgruppe Computergestützte Strahlenphysik am Institut für Strahlenphysik des HZDR in enger Zusammenarbeit mit dem Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) der TU Dresden entwickelt.
PIConGPU bietet...
- Ein variables, Yee-artiges Gitter, auf dem elektrische und magnetische Felder angenähert werden
- Particle-Pusher nach Boris und Vay
- Maxwell-Solver nach Yee und Lehe
- Current-Deposition nach Esirkepov und Villasenor-Buneman
- Formfaktoren für Makroteilchen: NGP, CIC, TSC, PSQ
- Berechnung der Ferndfeldstrahlung aufgrund der Elektronenbewegung
- Parallele HDF5 Ausgabe
- Online-Visualisierung (2D/3D)
Der Particle-in-Cell Algorithmus ist ein zentraler Algorithmus in der Plasmaphysik. Er erlaubt es, die Dynamik eines Plasmas durch die Bewegung der Elektronen und Ionen im Plasma auf Basis der Maxwell-Gleichungen zu beschreiben.
Was macht der Particle-in-Cell Algorithmus?
Der PIC-Algorithmus löst die sogenannte Maxwell-Vlasov-Gleichung. Zur Lösung werden die elektrischen und magnetischen Felder auf einem räumlichen Gitter interpoliert.
Geladene Teilchen wie Elektronen und Ionen werden durch sogenannte Makroteilchen beschrieben. Diese können die Bewegung von bis zu mehreren hundert Teilchen durch die Bewegung einer begrenzten Teilchenverteilung beschreiben. Diese Makroteilchen bewegen sich unter Einfluss der elektrischen und magnetischen Felder.
Die Bewegung der geladenen Teilchen erzeugt Ströme. Nach dem Gesetz von Ampère erzeugen diese Ströme Magnetfelder. Diese Magnetfelder wiederum erzeugen nach dem Gesetz von Faraday elektrische Felder.
Diese neuen Felder wirken dann zurück auf die Makroteilchen.
Was ist das Neue an PIConGPU?
Grafikkarten rechnen schnell, weil viele Prozessoren parallel arbeiten. Um die maximale Leistung der Grafikkarte zu nutzen, sollten die Prozessoren möglichst unabhängig voneinander arbeiten.
Im PIC-Algorithmus ist das dann problematisch, wenn in einem Rechenschritt die Daten von ortsfesten, an das Gitter gebundenen Strömen aus der Bewegung ortsungebundener Teilchen berechnet werden, da dann durch die Bewegung der Teilchen Zugriffe auf Teilchendaten und auf Stromdaten in unterschiedlichen Teilen des Speichers stattfinden und sich die parallel laufenden Prozesse in die Quere kommen können.
Dieses Problem wurde in PIConGPU durch Einführung neuer Datenstrukturen und asynchroner Datenverarbeitung gelöst [3,4].
Und das alles mit einer Grafikkarte?
Nein, denn Grafikkarten haben zu wenig Speicher, um große physikalische Systeme berechnen zu können. Man braucht daher mehrere Grafikkarten, die sich das simulierte Volumen aufteilen.
Hierbei taucht das Problem auf, dass die Grafikkarten untereinander Daten austauschen müssen. Dies dauert sehr lange, so dass die Grafikkarten normalerweise aufeinander warten müssten, bis die Daten ausgetauscht wurden.
Wir haben es geschafft, diese Wartezeit sinnvoll zu nutzen und können so die Berechnung neuer Daten auf den Grafikkarten mit der Datenkommunikation überlappen, dass die Grafikkarten durchgängig rechnen können [3,4]. Dies war nur in Zusammenarbeit mit dem ZIH, TU Dresden, möglich, das eine effiziente Bibliothek für die Datenkommunikation entwickelt sowie Werkzeuge zur Messung der Leistungsfähigkeit des Codes zur Verfügung gestellt hat.
Was bedeutet das für Simulationen?
Wir wollen die Plasmadynamik in grossen Systemen schnell berechnen, um so die Zeit zwischen dem Beginn der Simulation und der Antwort auf unsere Fragestellung zu minimieren. Dies kann bedeuten, dass ein Ergebnis das normalerweise in einer Woche berechnet wird, in wenigen Stunden berechnet werden kann.
PIConGPU Partner
Vorträge über PIConGPU
Advanced Accelerator Concepts Workshop AAC 2012, Austin, TX, USA
Referenzen
[2] H. Burau, et al, PIConGPU : A Fully Relativistic Particle-in-Cell Code for a GPU Cluster, IEEE Transactions on Plasma Science 38(10), 2831-2839, 2010
[3] W. Hönig et al, A Generic Approach for Developing Highly Scalable Particle-Mesh Codes for GPUs, SAAHPC 2010 extended abstract
[4] M. Bussmann et al, Radiative Signatures of the Relativistic Kelvin-Helmholtz Instability, Proceedings SC13: International Conference for High Performance Computing, Networking, Storage and Analysis 5-1, 2013