DOURNAC.ORG
Français  English
 

MPI Parallelization for numerically solving the 3D heat equation


Coding > MPI Parallelization for numerically solving the 3D heat equation

 

1.Exécution :

Le code séquentiel et parallélisé se trouvent dans l'archive suivante : Heat3D_MPI_Solving.tar.gz

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é :

    user                   hard                    nofile                    2048

    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 :



ps : join like me the Cosmology@Home project whose aim is to search for the model that best describes our universe

Home | Astronomy | Sciences | Philosophy | Coding | Cv
- dournac.org © 2003 by fab -