7Annexe 1 : Construction d'une version parallèle de Code_Aster. Code Aster logiciel de simulation
Code_Aster
Titre :
Notice d'utilisation du parallélisme
Responsable :
Olivier BOITEAU
Version default
Date :
16/02/2011
Page :
20/21
Clé :
U2.08.06
Révision :
5559
7 Annexe 1 : Construction d'une version parallèle de
Code_Aster
On peut mettre en oeuvre un calcul parallèle sur d'autres plate-formes que la machine Aster
(cluster, noeuds de SMP...) voire sans l'usage d'Astk. Tout d'abord, il faut faire un choix entre le parallélisme MPI et celui OpenMP. Dans l'absolu, on peux cumuler les deux dans une même version dite parallèle hybride (c'est le cas sur la machine centralisée) mais, en première approche, on va ici les séparer.
Le wiki du site internet ( http://www.code-aster.org/wiki ) est une mine d'informations complémentaires
(et actualisées) sur ces aspects informatiques.
7.1
Version parallèle OpenMP
Ce paragraphe concerne le scénario parallèle 2a (cf. §3).
Partant d'une version séquentielle du code et d'un compilateur OpenMP compatible (Intel, gcc...), il faut recompiler les sources après avoir modifié le fichier de configuration Aster (config.txt) :
•
Rajouter l'option appropriée pour le compilateur (par ex. icc -openmp) via les listes d'options OPTC_D/O, OPTF90_D/O... Il y en a une pour chaque langage et chaque mode d'utilisation (debug ou optimisé).
•
Faire la même chose au niveau du linker (ligne OPTL du LINK).
•
Positionner l'option de précompilation -D USE_OPENMP pour le préprocesseur C (lignes
OPTC_D/O).
Une fois la version OpenMP compilée, il faut transmettre le nombre de threads que l'on souhaite utiliser lors du calcul. Ce paramètre est transmis par Astk aux scripts de lancement (.btc, exec_aster) par l'intermédiaire de la variable d'environnement OMP_NUM_THREADS.
Remarque :
Attention à ne pas activer le parallélisme OpenMP des BLAS (cf. §4 .3). Ce dernier est contre-
productif avec ce scénario parallèle.
7.2
Version parallèle MPI
Ce paragraphe concerne les scénarios parallèles 1b, 2b, 2c et 3a (cf. §3).
À grands traits, il faut tout d'abord :
•
Choisir une implémentation MPI compatible/optimisée pour sa plate-forme matérielle
(machine, réseau, mémoire) et l'activer si nécessaire (mpdboot ...).
•
Si l'on souhaite utiliser MUMPS ou PETSC en parallèle, les installer/compiler avec leurs
dépendances : BLACS, Scalapack, METIS... (cf. wiki).
•
Recompiler les sources Aster (a minima celles traitant du parallélisme) avec les «wrappers
MPI» et les options de pré-compilations ad hoc (USE_MPI/MPI_MUMPS/FETI,
HAVE_MUMPS/PETSC...). Pour ce faire, on pourra s'inspirer du fichier de configuration Aster config.mpi, pendant du config.txt standard utilisé en séquentiel (cf. wiki).
•
Il faut préparer son calcul en mode séquentiel (par ex. avec le menu 'pre' d'Astk).
•
Si on ne souhaite pas utiliser Astk, il faut écrire un script shell (cf. exemple ci-dessous) qui
duplique pour chaque processus MPI, l'espace de travail initialisé par l'étape précédente sur chaque processeur alloué, qui source l'environnement de travail et qui lance le calcul
Aster avec le paramétrage usuel. La syntaxe exacte de ces deux derniers points et le nom du répertoire de travail sont rappelés en fin de fichier message, à l'issu de la préparation du calcul.
18 En général une implémentation MPI se présente sous la forme de wrappers (par ex. mpicc/mpif90) et d'un lanceur. Le wrapper est un enrobage des compilateurs qui appellent les bons fichiers d'entête sur la ligne de compilation et fait l'édition de liens avec les bonnes bibliothèques MPI. Le lanceur (par ex. mpiexec/mpirun/prun) permet, comme son nom l'indique, de lancer l'exécutable parallèle.
Manuel d'utilisation Fascicule u2.08 : Fonctions avancées et contrôle des calculs
Document diffusé sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)
Code_Aster
Titre :
Notice d'utilisation du parallélisme
Responsable :
Olivier BOITEAU
Version default
Date :
16/02/2011
Page :
21/21
Clé :
U2.08.06
Révision :
5559
mkdir -p /tmp/mon_etude_$$
(Nom aléatoire de la directory locale) cp -r /home/mon_etude_preparee/* /tmp/mon_etude_$$ cd /tmp/mon_etude_$$
(Préparation de la directory de travail)
(On se place dans ce nouvel espace de travail) export OMP_NUM_THREADS=1
(Pour être uniquement en MPI)
. /aster/ASTK/ASTK_SERV/conf/aster_profile.sh
...
(On source l'environnement)
./aster.exe Eficas/Execution/E_SUPERV.py -eficas_path etc.
rm -r /tmp/mon_etude_$$
(On n'oublie pas de faire le ménage !)
(Lancement effectif par le proc.)
Figure A1.1._ Exemple de script shell pour préparer/lancer un calcul parallèle MPI.
•
Il ne reste plus qu'à se positionner sur la frontal et à utiliser le lanceur MPI. Par exemple,
via une commande du type prun -n 16 nom_du_script.sh .
Manuel d'utilisation
Document diffusé sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)
Fascicule u2.08 : Fonctions avancées et contrôle des calculs

Public link updated
The public link to your chat has been updated.