1.Exécution :
Veuillez vous assurer à l'exécution du code parallèle (avec la commande "mpirun") que le nombre de processeurs soit égal au produit du nombre de sous-domaines selon x par le nombre de sous-domaines selon y et le nombre de sous-domaines selon z ( paramètres "x_domains", "y_domains" et "z_domains" situés dans le fichier "param" ):
$ cat param
size_x
32
size_y
64
size_z
16
x_domains
4
y_domains
4
z_domains
4
MaxStep
1000000
dt
1.0d-5
cnv_tol
1.0d-6 |
Nous allons donc utilisé ici 64 processeurs. Signalons que pour une exécution avec un nombre de processeurs supérieur ou égal à 256, il faut :
- rajouter la ligne suivante dans "/etc/security/limits.conf" en remplaçant "user" par l'utilisateur concerné :
ceci permet de fixer le nombre maximum de "file descriptors" à 2048 (égal par défaut à 1024). En effet, il doit être supérieur à 4 fois le nombre de processeurs utilisés, soit 1024 pour 256 processeurs.
- utiliser le paramètre mca opal_set_max_sys_limits égal à 1 dans la commande d'exécution (voir ici).
Dans notre exemple, avec 64 processeurs, la ligne de commande est :
$ mpirun -np 64 explicitPar
Convergence after 28668 steps
Problem size 32768
Wall Clock 29.685592889785767
Computed solution in "outputPar.dat" file
|
2.Résultats :
Voici un gif animé représentant l'évolution au cours du temps de la diffusion pour un maillage 32x64x16 :
3.Performances :
|