BigDFT AVEC
ACCÉLÉRATION GPU

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

BigDFT

BigDFT est un code de structure électronique massivement parallèle basé sur la Théorie de la fonctionnelle de la densité (DFT), qui exploite une base d’ondelettes avec une méthode de correction linéaire. Les ondelettes forment une base à espace réel sur une grille adaptative (notre implémentation utilise deux niveaux distincts de résolution). Nous utilisons par ailleurs des pseudopotentiels GTH (Goedecker-Teter-Hutter) ou HGH (Hartwigsen-Goedecker-Hutter) pour supprimer les électrons de cœur.

BigDFT est intégré à la suite logicielle ABINIT (version 5.5 ou plus), mais il est également possible de se le procurer sous la forme d’une version indépendante accessible en ligne. Le solveur Poisson - basé sur un formalisme de la fonction de Green avec des systèmes périodiques, des surfaces et des systèmes isolés - peut être simulé avec des conditions de liaison explicites.
Intégré à ABINIT, Octopus et CP2K, le solveur Poisson peut par ailleurs être téléchargé et utilisé indépendamment. Le code, les didacticiels et la documentation sont disponibles sur le site Internet de BigDFT.

Installation

Vous pouvez télécharger puis installer BigDFT en local sur un serveur Bare Metal ou exécuter un conteneur BigDFT dématérialisé via NVIDIA GPU Cloud.

Installer des applications dans un environnement de calcul haute performance (HPC) peut s’avérer complexe. La technologie des conteneurs logiciels vous permet d’exécuter votre application sans l’installer en local sur votre système, ce qui vous permet de déployer la dernière version de l’application tout en optimisant les performances.

L’exécution d’un conteneur BigDFT est par ailleurs très simple : sa configuration nécessite quelques minutes seulement.

Exécution

Une fois que vous avez accédé au conteneur BigDFT via NGC, quatre options s’offrent à vous.

  • Exécuter BigDFT directement via la commande "nvidia-docker run".
  • Exécuter BigDFT de manière interactive au sein du conteneur.
  • Exécuter BigDFT via Jupyter Notebook à partir d’un navigateur.
  • Exécuter BigDFT avec MPI/OpenMP/GPU.

1. Exécuter BigDFT par ligne de commande

Pour exécuter le conteneur BigDFT avec une interface par ligne de commande (CLI), vous devez copier les fichiers d’entrée dans le répertoire courant du système hôte. Vous pouvez ensuite utiliser la commande ci-après pour exécuter BigDFT et rendre le répertoire de travail courant accessible au sein du conteneur via le dossier "/results" :

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

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

2. Exécuter BigDFT de manière interactive

Dans cet exemple, nous allons exécuter BigDFT de manière interactive et reproduire le scénario de test FeHyb inclus dans le conteneur.

Pour exécuter le conteneur BigDFT de manière interactive, veuillez saisir la commande ci-après, qui permet d’initialiser le conteneur et de monter votre répertoire actuel sur "/results" au sein du conteneur. (Veuillez consulter les options -v ci-dessous pour définir l’allocation de votre répertoire de données local dans le conteneur.)

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

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

Après l’initialisation du conteneur, vous vous trouverez dans le répertoire "/". Vous pouvez changer le chemin d’accès sur "/docker/FeHyb/GPU", où vous trouverez les fichiers d’entrée (input.yaml, posinp.xyz, and psppar.Fe). Exécutez ensuite le test :

cd /docker/FeHyb/GPU

bigdft

Une fois la procédure de calcul effectuée, les données de sortie se trouvent dans le fichier "log.yaml" et les données chronologiques se trouvent dans le fichier "time.yaml". Vous pouvez copier ces fichiers dans "/results", de manière à les sauvegarder dans le répertoire courant du système hôte.

3. Exécuter BigDFT avec Jupyter Notebook

La commande par défaut lance un serveur Jupyter intégré au conteneur, auquel vous pouvez accéder à partir d’un navigateur Web et qui autorise des sessions interactives au sein de BigDFT. Pour cela, vous devez au préalable rediriger le port 8888 du conteneur sur n’importe quel port du système hôte. Ce port doit autoriser les connexions si vous souhaitez y accéder à partir d’un autre ordinateur :

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

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

Dans cet exemple, nous pouvons lancer un navigateur et accéder au navigateur Web avec l’adresse localhost:8888

e mot de passe du serveur Jupyter est "bigdft". Un exemple est disponible dans le dossier "/ContainerXP/H2O-Polarizability.ipynb".

Vous trouverez des ressources de documentation à l’adresse suivante.

4. Exécution de BigDFT avec MPI/OpenMPI/GPU

MVAPICH-GDR 2.3 étant installé dans le conteneur, une exécution avec des processus mpirun -np est possible.

OpenMP est activé par défaut et utilise tous les cœurs du système hôte. Pour utiliser l’interface MPI, il convient d’assigner à OMP_NUM_THREADS une valeur moins élevée (par exemple ncores/nprocesses).

Exécution directe avec 4 processus et 8 threads OpenMP sur un nœud à 32 cœurs :

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

Si des GPU multiples sont disponibles sur le nœud, chaque processus MPI essaiera d’utiliser un cycle et un nœud distincts si jamais plus de processus que de GPU sont disponibles (nous recommandons par ailleurs d’utiliser l’option Docker --ipc=host). Si une interface MPI basée sur NVIDIA® CUDA™ est requise pour les calculs PBE0, il peut s’avérer nécessaire d’activer sur 1 le paramètre "MV2_USE_CUDA". Ce paramètre n’est pas activé par défaut car il peut ralentir les instances non-GPU.

Exécution multi-GPU avec 4 processus sur un nœud à 32 cœurs :

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

Configuration de test

Le conteneur BigDFT contient des fichiers d’entrée permettant de tester le comportement du logiciel, avec ou sans accélération GPU :

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

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

Après l’initialisation du conteneur, vous vous trouverez dans le répertoire "/". Vous pouvez changer le chemin d’accès sur "/docker/FeHyb/GPU", où vous trouverez les fichiers d’entrée (input.yaml, posinp.xyz, and psppar.Fe). Exécutez ensuite le test :

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

La comparaison entre les deux instances révèle un gain de performance significatif entre la version CPU et la version GPU.

Des tests complémentaires peuvent être effectués pour adapter l’utilisation des ressources sur le système hôte. Un dispositif de test avancé est disponible dans le dossier "/docker/H2O_32".

Pour valider la pertinence des données de sortie, le fichier log.yaml peut être comparé aux fichiers log.ref.yaml disponibles pour les variantes CPU dans les dossiers de test. Pour effectuer facilement une procédure de comparaison, veuillez utiliser la commande suivante :

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

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

Le message de sortie suivant s’affiche en cas de réussite :

Test succeeded: True

CONFIGURATION SYSTÈME RECOMMANDÉE

Le conteneur BigDFT a été optimisé et testé pour offrir un maximum de fiabilité sur les systèmes à architecture NVIDIA Pascal™ ou NVIDIA Volta avec CUDA® 9 ou plus. Les procédures visuelles de dynamique moléculaire et tous les conteneurs d’application HPC disponibles via NVIDIA GPU Cloud peuvent être exécutés sur les systèmes suivants :

  • Stations de travail avec NVIDIA Titan V et CPU x86
  • Systèmes NVIDIA® DGX™
  • Clusters HPC avec GPU Pascal ou Volta, CUDA 9 ou plus et CPU x86
  • Solutions dans le Cloud (AWS, Google Cloud Platform et d’autres)

ACCÉDEZ À DES CONTENEURS D’APPLICATION
ACCÉLÉRÉS PAR GPU avec NVIDIA GPU Cloud.