BigDFT MIT GRAFIKPROZESSORBESCHLEUNIGUNG

Anleitung für grafikprozessorfähige Anwendungen lesen und direkt beginnen

BigDFT

BigDFT ist massiv-paralleler DFT-Elektronikstrukturcode (Dichtefunktionaltheorie), bei dem ein Wavelet-Basissatz verwendet wird, der eine lineare Skalierungsmethode unterstützt. Wavelets bilden einen Echtraum-Basissatz, der auf einem adaptiven Gitter verteilt ist (in unserer Implementierung mit zwei Auflösungsebenen). Die Kernelektronen werden mithilfe von GTH- (Goedecker-Teter-Hutter) oder HGH-Pseudopotenzialen (Hartwigsen-Goedecker-Hutter) entfernt.

BigDFT ist in ABINIT ab Version 5.5 verfügbar, kann aber auch als Standalone-Version von der Website heruntergeladen werden. Der Poisson-Löser, der auf einem Green-Funktion-Formalismus, periodischen Systemen, Oberflächen und isolierten Systemen basiert, kann mit expliziten Randbedingungen simuliert werden.
Der Poisson-Löser lässt sich auch unabhängig herunterladen und einsetzen und ist in ABINIT, Octopus und CP2K integriert. Code, Tutorials und Dokumentation stehen auf der BigDFT-Website zur Verfügung.

Installation

Sie können BigDFT herunterladen und im Bare-Metal-Verfahren installieren oder den BigDFT-Container aus der NVIDIA GPU Cloud abrufen und ausführen.

Das Installieren von Anwendungen in einer HPC-Umgebung (High Performance Computing) kann eine echte Herausforderung sein. Mit Containern können Sie die Anwendung ausführen, ohne sie im System zu installieren. So können Sie ganz einfach die aktuelle Version der Anwendung einrichten und gleichzeitig die Leistung optimieren.

Das Ausführen eines BigDFT-Containers ist sehr unkompliziert und kann in wenigen Minuten eingerichtet werden.

Befehlsausführung

Sobald Sie den BigDFT-Container aus NGC abgerufen haben, gibt es vier Möglichkeiten für die Ausführung:

  • Sie führen BigDFT direkt über den Befehl „nvidia-docker run“ aus.
  • Sie führen BigDFT innerhalb des Containers interaktiv aus.
  • Sie führen BigDFT mithilfe von Jupyter Notebook über einen Webbrowser aus.
  • Sie führen BigDFT mithilfe von MPI/OpenMP/GPU aus.

1. BigDFT über die Befehlszeile ausführen

Damit Sie den BigDFT-Container über die Befehlszeilenschnittstelle (CLI) ausführen können, muss das aktuelle Verzeichnis auf dem Hostsystem Eingabedateien enthalten. Wenn dies der Fall ist, können Sie den folgenden Befehl eingeben, mit dem BigDFT ausgeführt wird und das aktuelle Arbeitsverzeichnis innerhalb des Containers als „/results“ zugänglich gemacht wird:

nvidia-docker run -it --rm -v $(pwd):/results -w /results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bigdft

2. BigDFT interaktiv ausführen

In diesem Beispiel werden BigDFT interaktiv ausgeführt und ein FeHyb-Test, der im Container enthalten ist, reproduziert.

Zum interaktiven Ausführen des Containers verwenden Sie den folgenden Befehl. Dieser startet den Container und bindet das aktuelle Verzeichnis unter „/results“ ein, sodass es im Container zur Verfügung steht. (Verwenden Sie die -v-Optionen für den unten stehenden Befehl, um Ihr lokales Datenverzeichnis dem Verzeichnis im Container zuzuordnen.)

nvidia-docker run -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

Nach dem Starten des Containers befinden Sie sich im Verzeichnis „/“. Sie können dann zum Verzeichnis „/docker/FeHyb/GPU“ wechseln, in dem sich die Eingabedateien befinden („input.yaml“, „posinp.xyz“ und „psppar.Fe“), und den Test ausführen:

cd /docker/FeHyb/GPU

bigdft

Nach Abschluss der Berechnung finden Sie die Ausgabe in der Datei „log.yaml“ und die Timings in der Datei „time.yaml“. Sie können diese Dateien in das Verzeichnis „/results“ kopieren, um sie dann auf dem Hostsystem im aktuellen Ordner zu speichern.

3. Mit Jupyter Notebook ausführen

Mit dem Standardbefehl des Containers wird innerhalb des Containers ein Jupyter-Server gestartet, auf den Sie mit jedem Webbrowser zugreifen können. Dadurch wird auch das Ausführen interaktiver Sitzungen mit BigDFT möglich. Hierfür müssen Sie lediglich Port 8888 des Containers an einen beliebigen Port auf dem Hostsystem weiterleiten. Wenn Sie dann von einem anderen Computer aus darauf zugreifen möchten, muss dieser Port für Verbindungen geöffnet werden:

nvidia-docker run -p 8888:8888 -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

In diesem Beispiel können wir dann einen Webbrowser starten und mit ihm unter der Adresse „localhost:8888“ auf den Server zugreifen.

Das Passwort des aktiven Jupyter-Servers ist „bigdft“. Ein Beispiel für das Notebook liegt im Verzeichnis „/ContainerXP/H2O-Polarizability.ipynb“.

Weitere Informationen finden Sie hier.

4. Mit MPI/OpenMPI/GPU ausführen

MVAPICH-GDR 2.3 wird im Container installiert und das Starten mit „mpirun -np“-Prozessen ist möglich.

OpenMP ist standardmäßig aktiviert und nutzt alle Kerne des Hostsystems. Wenn Sie MPI (Message Passing Interface) verwenden möchten, muss „OMP_NUM_THREADS“ auf einen niedrigeren Wert (z. B. ncores/nprocesses) festgelegt werden.

Direkte Ausführung mit OpenMP (vier Prozesse und acht Threads) auf einem Knoten mit 32 Kernen:

nvidia-docker run -it --rm -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Wenn auf dem Knoten mehrere Grafikprozessoren verfügbar sind, versucht jeder MPI-Prozess, einen anderen Grafikprozessor zu verwenden. Falls mehr Prozesse als Grafikprozessoren vorhanden sind, werden diese abwechselnd genutzt. Außerdem wird empfohlen, für den Befehl „nvidia-docker run“ die Option „--ipc=host“ zu verwenden. Da für die PBE0-Berechnung eine NVIDIA® CUDA™-fähige MPI benötigt wird, ist es unter Umständen zusätzlich erforderlich, „MV2_USE_CUDA“ auf „1“ festzulegen. Dies ist standardmäßig nicht aktiviert, da es die Ausführung ohne Grafikprozessoren verlangsamen könnte.

Ausführung mit mehreren Grafikprozessoren (vier Prozesse) unter Verwendung von 32 Kernen:

nvidia-docker run -it --rm --ipc=host -e MV2_USE_CUDA=1 -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Testeinrichtung

Der BigDFT-Container enthält Eingabedateien zum Testen des Verhaltens der Software mit GPU-Beschleunigung und nur mit CPU:

nvidia-docker run -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

Nach dem Starten des Containers befinden Sie sich im Verzeichnis „/“. Sie können dann zum Verzeichnis „/docker/FeHyb/GPU“ wechseln, in dem sich die Eingabedateien befinden („input.yaml“, „posinp.xyz“ und „psppar.Fe“), und den Test ausführen:

cd /ContainerXP/FeHyb/GPU

bigdft

cp log.yaml /results/log_gpu.yaml

cp time.yaml /results/time_gpu.yaml

cd /ContainerXP/FeHyb/NOGPU

bigdft

cp log.yaml /results/log_cpu.yaml

cp time.yaml /results/time_cpu.yaml

Beim Vergleich zwischen den beiden Ausführungen sollte eine enorme Verbesserung von der CPU- zur GPU-Version zu sehen sein.

Es können auch andere Tests ausgeführt werden, um die Ressourcen auf dem Hostsystem optimal zu nutzen. Ein größerer Testsatz ist im Ordner „/docker/H2O_32“ verfügbar.

Sie können die Ausgabe auf ihre Richtigkeit überprüfen, indem Sie die Datei „log.yaml“ mit den „log.ref.yaml“-Dateien vergleichen, die in den CPU-Varianten der Testordner vorhanden sind. So führen Sie einen einfachen Vergleich durch:

python /usr/local/bigdft/lib/python2.7/site-packages/fldiff_yaml.py -d log.yaml -r

./log.ref.yaml -t ./tols-BigDFT.yaml

Folgende Ausgabe sollte angezeigt werden:

Test succeeded: True

EMPFOHLENE SYSTEMKONFIGURATIONEN

Der BigDFT-Container wurde im Hinblick auf Zuverlässigkeit optimiert und getestet, um eine reibungslose Ausführung in NVIDIA Pascal™- und NVIDIA Volta-basierten Systemen mit CUDA 9 oder höher sicherzustellen. VMD (Visual Molecular Dynamics) und alle HPC-Anwendungscontainer, die in der NVIDIA GPU Cloud verfügbar sind, können in den folgenden Systemen ausgeführt werden:

  • Workstation: Mit NVIDIA Titan V und x86-CPU
  • NVIDIA® DGX™-Systeme
  • HPC-Cluster mit Pascal/Volta-Grafikprozessoren, CUDA 9, x86-CPU
  • Cloud (AWS, Google Cloud Platform und weitere)

MIT NVIDIA GPU Cloud
AUF CONTAINER FÜR ANWENDUNGEN MIT GPU-BESCHLEUNIGUNG ZUGREIFEN