Wissenschaftlicher Bereich
Quantenmechanik, Dichtefunktionaltheorie
Kurzbeschreibung
Am Forschungszentrum Jülich wird eine Sammlung Codes (JuKKR) zur Berechnung der elektronischen Struktur basierend auf der Greenfunktionsmethode von Korringa-Kohn-Rostocker entwickelt. Darunter befindet sich der KKRimp Code, welcher die quantenmechanische Simulation von Verunreinigungen und Defekten eingebettet in einer Vielzahl an Materialien ermöglicht. Dadurch werden unvergleichliche Einsichten in die elektronischen und magnetischen Eigenschaften ermöglicht. Außerdem kann der Streuvorgang von Elektronen weg von Defektatomen beschrieben werden. Kürzlich wurde der Code erweitert, um Defekte eingebettet in Supraleiter zu beschreiben. Diese Erweiterung stellt einen wichtigen Bestandteil bei der Suche nach nützlichen Materialien für zukünftige, stabile Quantencomputeranwendungen dar.
Wir haben eine Performanceanalyse des KKRimp Codes mit den Werkzeugen Score-P, Scalasca, Cube und Vampir durchgeführt. Dabei wurden unter anderem die aus dem POP2 Projekt bekannten Metriken für hybride, parallele Anwendungen berechnet [3]. Mit Hilfe der POP-Metriken konnten Teile des Codes identifiziert werden, die Potential für eine Optimierung der vorhandenen OpenMP Parallelisierung haben.
Dazu gehört beispielsweise die Routine rhooutnew, welche eine Integration von Dichtematrizen über eine Menge an radialen Diskretisierungspunkten berechnet. Die radialen Disktretisierungspunkte sind bereits über alle MPI-Prozesse verteilt. Jedoch beschränkt sich die hybride OpenMP Parallelisierung auf das Aufrufen von Operationen der Linearen Algebra, wie z.B. zgemm, aus der parallelen Version der Intel Math Kernel Library (MKL). Dadurch wird ein signifikanter Teil dieser Routine nur seriell innerhalb des Mainthreads eines MPI-Prozesses ausgeführt, was dazu führt, dass nicht alle allozierten Rechenressourcen effizient genutzt werden.
Um die Leistung des Codes zu optimieren, wurde deshalb die OpenMP Parallelisierung dieser Routine so verändert, dass die komplette Integrationsschleife über alle radialen Diskretisierungspunkte mit OpenMP parallelisiert wird und nicht nur einzelne Teile. Im gleichen Schritt wurden die parallelen Aufrufe der Linearen Algebra Operationen wie zgemm aus der Intel MKL durch serielle Aufrufe ersetzt, um geschachtelte Nebenläufigkeit der OpenMP Threads zu vermeiden.
Ergebnisse
Ausgangspunkt unserer Leistungsbewertungen ist der originale Code, in dem die OpenMP Parallelisierung der Integration in der Routine rhooutnew nur durch Aufrufe der parallelen Intel MKL erzielt wurde. Der Code wurde mit dem Intel Fortran Compiler 2021.5.0 und der Intel MPI Suite 2021.3.1 übersetzt und auf dem CLAIX-2018 Cluster ausgeführt. Dabei wurden insgesamt 16 MPI-Prozesse und eine variierende Anzahl an OpenMP Threads pro Prozess gewählt. Die folgende Abbildung stellt die Laufzeiten der Routine rhooutnew in der originalen (ref) und optimierten (opt) Version gegenüber.