SPECFEM3D Globe mit Grafikprozessorbeschleunigung

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

SPECFEM3D Globe

SPECFEM3D Globe simuliert die globale und kontinentale Ausbreitung regionaler seismischer Wellen. Mit dieser Anwendung können Forscher die Auswirkungen der lateralen Variationen bei der Geschwindigkeit von Kompressionswellen, Scherwellengeschwindigkeit, Dichte, Rotation und Selbstgravitation in einem 3D-Krustenmodell analysieren.

Die aktuelle Version 7.0 bietet eine Grafikprozessorunterstützung sowohl für OpenCL- als auch CUDA-Hardwarebeschleuniger, und basiert auf einer automatischen Quelle-zu-Quelle-Transformationsbibliothek.

SPECFEM3D GLOBE läuft 25-mal schneller in einem einzelnen NVIDIA® Tesla® P100-Grafikprozessor, sodass Wissenschaftler ihre seismischen Simulationen in Stunden anstatt in Tagen durchführen können.

SPECFEM3D Globe bietet eine Beschleunigung um das 25-Fache bei Grafikprozessoren

Installation

Systemanforderungen

SPECFEM3D_GLOBE sollte auf einer beliebigen Plattform mit MPI-Unterstützung funktionieren. In diesem Leitfaden schlagen wir Ihnen folgende Konfiguration vor:

  • Betriebssystem: Centos 7 oder neuer
  • CUDA 8.0 für NVIDIA Pascal™-Grafikprozessoren
  • Ein moderner C- und Fortran-Compiler
  • NVIDIA-Grafikprozessor, der eine Compute Capability von 3.0 oder höher unterstützt

Download‑ und Installationsanleitung

   1. Laden Sie den Quellcode SPECFEM3D_Globe 7.0.0 herunter.

   2. Extrahieren Sie das Paket:

tar xf SPECFEM3D_GLOBE_V7.0.0.tar.gz

3. Erforderliche Compiler:

nvcc, gcc und gfortran müssen in Ihrem System und unter Ihrem Pfad verfügbar sein. Wenn sie nicht verfügbar sind, wenden Sie sich an Ihren Systemadministrator.

4. Konfigurieren Sie das Paket.

./configure --with-cuda=cuda5

Mit dieser Konfiguration wird festgelegt, dass die moderneren CUDA-Bindungen in CUDA 5.0 und höher verwendet werden.

  5. Erstellen Sie das Programm.

make

Note in testing TESLA P100 GPUs with specfem3d_globe-7.0.0 it has been observed that the default configure and make steps described in the guide will lead to building a binary that uses CUDA nvcc flags “-gencode=arch=compute_35,code=\"sm_35,compute_35\" “. For running on P100 GPUs a user might normally edit the makefile generated by configure (or makefile.in prior to running configure) to the sm_60 is selected instead of sm_35. When this is done with specfem3d_globe-7.0.0 the resulting sm_60 binary actually slightly slower when running on P100 vs the default sm_35 binary. This is unexpected and under investigation.

Befehlsausführung

Führen Sie SPECFEM3D Globe als zweistufigen Prozess aus. Zuerst muss das Gitter erstellt werden, welches später die Simulation berechnen soll. Dann kann der Solver ausgeführt werden, um die endgültige Lösung zu generieren.

Da einige Arrays statisch dimensioniert sind muss Folgendes beachtet werden: Wenn Änderungen an der Datei „DATA/Par_file“ vorgenommen werden (die einige Parameter festlegt), muss das Programm erneut kompiliert werden.

1. Aktualisieren Sie „DATA/Par_file“ und die verbleibenden Datendateien. 
Um Grafikprozessoren zu verwenden, muss der GPU_MODE-Parameter in „DATA/Par_file“ auf .true festgelegt sein.

2. Erstellen Sie das Programm neu. Da das Programm statische Array-Größen verwendet, muss das Programm bei Änderungen an „Par_file“ neu erstellt werden.

make clean
make

3. Führen Sie den Mesher aus (in diesem Fall werden 4 MPI-Prozesse mit 4 Grafikprozessoren ausgeführt).

mpirun -np 4 bin/xmeshfem3D

4. Führen Sie das Hauptprogramm aus.

mpirun -np 4 bin/xspecfem3D

Benchmarks

In diesem Abschnitt wird erläutert, wie Sie die Leistung Ihres Systems testen können und wie hoch diese in einem System mit typischer Hardwarekonfiguration ist.

1. Laden Sie das Programm herunter und installieren Sie es, so wie im Abschnitt „Installation“ beschrieben.

2. Laden Sie die tar-Datei mit den erforderlichen Eingabedateien herunter.

3. Wechseln Sie in das SPECFEM-Stammverzeichnis.

4. Extrahieren Sie die verschiedenen PAR-Dateien (Par_files) aus der TAR-Datei.

tar -xf parfiles.tar

Hierdurch werden die Datendateien in das DATA-Verzeichnis in Ihrer SPECFEM-Installation extrahiert und die Dateien STATIONS und CMTSOLUTION werden aktualisiert. Wir fügen die Dateien für 1, 2 und 4 Grafikprozessoren und für 36 CPUs hinzu. Das verwendete Beispiel ist eine geänderte Version des Beispiels „global_s362ani_shakemovie“, das mit SPECFEM3D Globe verteilt wird. Die Problemgröße wurde reduziert, sodass sie leichter in einen Knoten passt. Beachten Sie, dass es Einschränkungen bei der Anzahl von MPI-Prozessen gibt, die verwendet werden können. Die NPROC-Variablen ändern sich abhängig davon, ob bei der Ausführung 1 Grafikprozessor (1 x 1), 2 Grafikprozessoren (2 x 1), 4 Grafikprozessoren (2 x 2) oder 36 CPU-Cores (6 x 6) verwendet werden.

An der „Par_file“ werden folgende wichtige Änderungen vorgenommen:

NCHUNKS=1
NEX_XI=96
NEX_ETA=96
NPROC_XI=2      # Hinweis: 2 x 2 entspricht dem Anwendungsfall mit 4 Grafikprozessoren
NPROC_ETA=2
GPU_MODE=.true.      # Hinweis: .false - nur für reine CPU-Systeme

Diese Änderungen dienen dazu, die Simulation zu verkleinern, die Grafikprozessorbeschleunigung zu aktivieren/deaktivieren und auch dazu, die Anzahl der MPI-Prozesse (1 pro Grafikprozessor) anzupassen, die für jeden der Testfälle erforderlich sind. Weitere Informationen finden Sie in der „Par_file“.

5. Wechseln Sie in das DATA-Verzeichnis.

cd DATA

6. Kopieren Sie die Datei, die der Anzahl der zu verwendenden Grafikprozessoren entspricht, in die „Par_file“, z. B. die Version mit vier Grafikprozessoren.

cp Par_file_96x96_100_4GPU Par_file

7. Wechseln Sie zurück zum Basisverzeichnis.

cd ..

8. Erstellen Sie das Programm erneut, und führen Sie den Mesher aus. Da das Programm statische Array-Größen verwendet, muss das Programm jedes Mal neu kompiliert werden, wenn die „Par_file“ geändert wird.

make clean
make
mpirun -np 4 bin/xmeshfem3D

9. Führen Sie den Solver aus.

mpirun -np 4 bin/xspecfem3D

10. Sehen Sie am Ende der Solver-Ausgabe nach, wie lange die Ausführung des Programms gedauert hat.

tail OUTPUT_FILES/output_solver.txt

Beachten Sie, dass der Mesher-Schritt nicht grafikprozessorbeschleunigt ist. Er wird in der Praxis einmal ausgeführt und die Ausgabe kann dann für viele Simulationen (Solver-Schritt) verwendet werden. Daher basiert der Benchmark ausschließlich auf der Zeit für den Solver-Schritt.

Erwartete Leistungsergebnisse

In diesem Abschnitt finden Sie die Benchmarks mit der erwarteten Leistung auf verschiedenen Systemen mit einem oder mehreren Knoten.

SPECFEM3D Globe – Leistung bei einer Skalierung mit mehreren Grafikprozessoren
SPECFEM3D Global – Leistung bei einer Skalierung mit mehreren Grafikprozessoren
SPECFEM3D Globe bietet eine Beschleunigung um das 25-Fache bei Grafikprozessoren

Empfohlene Systemkonfigurationen

Hardwarekonfiguration

PC

Parameter
Specs

CPU Architecture

x86

System Memory

16-32GB

CPUs

2 (10+ cores, 2 GHz)

GPU Model

GeForce® GTX TITAN X

GPUs

1-4

Servers

Parameter
Specs

CPU Architecture

x86

System Memory

64GB

CPUs/Node

2 (10+ cores, , 2+ GHz)

Total # of Nodes

1

GPU Model

NVIDIA®Tesla® P100,
Tesla® K80

GPUs/Node

1-4

Softwarekonfiguration

Software stack

Parameter
Version

OS

CentOS 7.3

GPU Driver

375.20 or newer

CUDA Toolkit

8.0 or newer

PGI Compliers

16.9

Ihre ideale Grafikprozessorlösung