SPECFEM3D-Globe avec accélération GPU

Exploitez le plein potentiel de SPECFEM3D Globe avec notre guide de démarrage pour application GPU.

SPECFEM3D Globe

SPECFEM3D Globe simule la propagation des ondes sismiques à l’échelle mondiale, continentale et régionale. Cette application permet aux chercheurs d’analyser les effets des variations latérales en matière de compression, de cisaillement, de densité, de rotation et d’autogravitation sur un modèle de croûte 3D.

Basée sur une bibliothèque de transformation automatique de source à source, la dernière version de SPECFEM3D Globe (7.0) offre une compatibilité étendue avec les solutions graphiques NVIDIA et les environnements OpenCL/CUDA.

SPECFEM3D GLOBE offre des performances jusqu’à 25 fois plus rapides avec les GPU NVIDIA® Tesla® P100, ce qui permet de réduire la durée des simulations sismiques de plusieurs jours à quelques heures seulement.

SPECFEM3D Globe offre des performances jusqu’à 25 fois plus rapides grâce aux GPU NVIDIA

Installation

Configuration requise

SPECFEM3D_GLOBE fonctionne sur toute plateforme compatible MPI. Dans le cadre de ce guide, nous vous suggérons la configuration suivante :

  • Système d’exploitation : Centos 7 ou plus récent
  • CUDA 8.0 pour les GPU à architecture Pascal™
  • Compilateur C et Fortran récent
  • GPU NVIDIA compatible avec les capacités de calcul 3.0 ou plus

Instructions de téléchargement et d’installation

   1. Téléchargez le code source de SPECFEM3D_Globe 7.0.0.

   2. Extrayez le pack.

tar xf SPECFEM3D_GLOBE_V7.0.0.tar.gz

3. Obtenez les compilateurs requis.

Assurez-vous que nvcc, gcc et gfortran sont disponibles sur votre système et dans votre chemin d’accès. S’ils ne sont pas disponibles, veuillez contacter votre administrateur système.

4. Configurez le pack.

./configure --with-cuda=cuda5

Veuillez noter que nous allons utiliser les bindings CUDA les plus récents (CUDA 5.0 et versions ultérieures).

  5. Construisez le programme.

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.

Exécution

L’exécution de SPECFEM3D Globe est un processus en deux phases. Vous devez commencer par créer le mesh de résolution du problème final. Vous pouvez ensuite exécuter le solveur pour générer la solution finale.

Étant donné que certains tableaux sont dimensionnés de manière statique, veuillez noter que tout changement apporté au fichier DATA/Par_file (qui définit certains paramètres) nécessite une recompilation du programme.

1. Actualisez le fichier DATA/Par_file et les fichiers de données restants. 
Pour utiliser des GPUs, vous devez définir sur .true le paramètre GPU_MODE du fichier DATA/Par_file.

2. Reconstruisez le programme. Comme le programme utilise des tableaux à taille statique, tout changement apporté au fichier Par_file requiert de reconstruire le programme.

make clean
make

3. Exécutez le mesher (dans ce cas d’utilisation avec 4 tâches MPI et 4 GPU).

mpirun -np 4 bin/xmeshfem3D

4. Exécutez le programme principal.

mpirun -np 4 bin/xspecfem3D

Benchmarks

Cette section explique comment tester les performances de votre système et détaille les performances constatées sur une configuration typique.

1. Téléchargez et installez le programme comme décrit dans la section Installation.

2. Téléchargez le fichier tar avec les fichiers d’entrée requis.

3. Accédez au répertoire root SPECFEM.

4. Extrayez les divers fichiers Par_files à partir de l’archive tar.

tar -xf parfiles.tar

Les fichiers de données vont être décompressés dans le répertoire DATA de votre installation SPECFEM. Actualisez ensuite les fichiers STATIONS et CMTSOLUTION. Nous incluons des fichiers pour 1 GPU, 2 GPU, 4 GPU et 36 CPU. L’exemple que nous utilisons emploie une version modifiée de l’exemple "global_s362ani_shakemovie" distribué avec SPECFEM3D Globe. La taille du problème a été réduite pour faciliter l’intégration au sein d’un seul nœud. Veuillez également noter qu’il existe des restrictions au nombre de tâches MPI que vous pouvez utiliser. Les variables NPROC vont changer selon la configuration utilisée par votre version, à savoir 1 GPU (1x1), 2 GPU (2x1), 4 GPU (2x2) ou 36 cœurs CPU (6x6).

Principaux changements apportés au fichier d’origine Par_file :

NCHUNKS=1
NEX_XI=96
NEX_ETA=96
NPROC_XI=2      # 2x2 correspond à la configuration avec 4 GPU
NPROC_ETA=2
GPU_MODE=.true.      # note .false. Pour CPU exclusiveement

Ces changements permettent de réduire la taille de la simulation, d’activer/désactiver l’accélération GPU et d’ajuster le nombre de processus MPI (1 par GPU) requis par chaque scénario de test. Veuillez consulter le fichier Par_file pour plus de détails.

5. Accédez au répertoire DATA.

cd DATA

6. Copiez le fichier correspondant au nombre de GPU que vous voulez utiliser avec Par_file (l’exemple ci-après est donné pour la configuration à 4 GPU).

cp Par_file_96x96_100_4GPU Par_file

7. Revenez au répertoire de base.

cd ..

8. Reconstruisez le programme et exécutez le mesher. Comme le programme utilise des tableaux à taille statique, tout changement apporté au fichier Par_file nécessite une recompilation.

make clean
make
mpirun -np 4 bin/xmeshfem3D

9. Exécutez le solveur.

mpirun -np 4 bin/xspecfem3D

10. Consultez la fin du fichier de sortie pour connaître la durée d’exécution du programme.

tail OUTPUT_FILES/output_solver.txt

Veuillez noter que l’étape relative au mesher n’exploite pas l’accélération GPU et que, en pratique, elle doit être réalisée une seule fois avant de réutiliser le fichier de sortie pour les simulations suivantes. Cela explique pourquoi seule la durée relative au mesher est utilisée à des fins de benchmark.

Résultats attendus

Cette section vous fournit les performances prévisionnelles de différents benchmarks avec des systèmes à nœud unique ou à nœuds multiples.

SPECFEM3D Globe - Performances multi-GPU
SPECFEM3D Globe - Performances multi-GPU
SPECFEM3D Globe offre des performances jusqu’à 25 fois plus rapides grâce aux GPU NVIDIA

Configuration système recommandée

Configuration matérielle

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

Configuration logicielle

Software stack

Parameter
Version

OS

CentOS 7.3

GPU Driver

375.20 or newer

CUDA Toolkit

8.0 or newer

PGI Compliers

16.9

Déployez votre solution GPU personnalisée.