Ein großer Vorteil von HPC-Systemen ist es Anwendungen parallel auf einer Vielzahl von Systemen laufen zu lassen. Dies ermöglicht es größere Rechnungen und Datenmengen zu verarbeiten.
Dabei ist es notwendig dem Batchsystem mitzuteilen, dass man eine parallele Anwendung starten will. Dazu gibt man im Select-Statement des Jobs die Option "mpiprocs" mit an.
#!/bin/bash #PBS -l select=16:ncpus=1:mpiprocs=1:mem=1gb
Das Beispiel 1 würde dazu führen, dass einem 16 eigenständige Ranks / Chunks zugeteilt werden mit jeweils 1 Core. Diese Chunks können sich auf einem Knoten befinden, jedoch auch völlig verteilt über den Cluster sein.
#!/bin/bash #PBS -l select=2:ncpus=12:mpiprocs=12:mem=1gb #PBS -l place=scatter
Beispiel 2 führt dazu, dass man zwei Ranks / Chunks mit jeweils 12 Cores bekommt, welche jedoch zwingend auf verschiedenen Knoten sind.
Danach gibt es mehrere Möglichkeiten die Anwendung zu starten:
MPI
Das Message Passing Interface (MPI) ist ein offener Standard für die Kommunikation zwischen mehreren Prozessen einer parallelen Anwendung.
Aktuell ist dieser Standard in der Version 3.1 verfügbar und wird auch in den neuesten Implementierungen (z.B. Intel MPI) unterstützt.
Auf unserem HPC-System sind folgende MPI-Versionen verfügbar:
MPI | Version | module | Anmerkung |
---|---|---|---|
Intel MPI | 4.1.0.024 | intelmpi/4.1.0.024 | |
Intel MPI | 5.0.2.044 | intelmpi/5.0.2.044 | bevorzugt |
MPT | 2.06 | mpt/2.06 | optimiert für SGI UV |
pbsdsh
Dieses Tool ist Bestandteil des Batchsystems PBSPro und ermöglicht es ein Programm auf allen Nodes und allen Cores des Jobs zu starten. Dabei ist zu beachten, dass es grundsätzlich keine Möglichkeit zur Unterscheidung der Prozesse gibt. Man ist somit also gezwungen sich selbst darum zu kümmern, dass unterschiedliche Berechnungen ausgeführt werden.
Dies kann beispielsweise auch genutzt werden um einen Performancevergleich zwischen unterschiedlichen Architekturen im Cluster für das eigene Programm zu machen.