@@ -34,13 +34,13 @@ Une partie des fichiers présents dans le dossier Appli-iso3dfd sont les fichier
...
@@ -34,13 +34,13 @@ Une partie des fichiers présents dans le dossier Appli-iso3dfd sont les fichier
## Compilation de iso3dfd
## Compilation de iso3dfd
Pour compiler iso3dfd il suffit d'éxcuter dans le terminal:
Pour compiler iso3dfd il suffit d'exécuter dans le terminal:
```bash
```bash
$ make -eOPTIMIZATION=<opt-flag> -esimd=<simd-flag> last
$ make -eOPTIMIZATION=<opt-flag> -esimd=<simd-flag> last
```
```
Il faut alors remplacer opt-flag par "-O2" ou "-O3" et correspond au niveau d'optimisation désiré pour la compilation de l'exécutable. Il faut aussi remplacer le tag de vectorisation simd-flag par "sse", "avx", "avx2" ou "avx512".
Il faut alors remplacer opt-flag par "-O2" ou "-O3" qui correspond au niveau d'optimisation désiré pour la compilation de l'exécutable. Il faut aussi remplacer le tag de vectorisation simd-flag par "sse", "avx", "avx2" ou "avx512".
## Exécution de iso3dfd
## Exécution de iso3dfd
...
@@ -48,7 +48,7 @@ Il faut alors remplacer opt-flag par "-O2" ou "-O3" et correspond au niveau d'op
...
@@ -48,7 +48,7 @@ Il faut alors remplacer opt-flag par "-O2" ou "-O3" et correspond au niveau d'op
Une fois compilé, l'exécutable iso3dfd devrait se trouver dans le dossier bin et peut être lancé avec la commande:
Une fois compilé, l'exécutable iso3dfd devrait se trouver dans le dossier bin et peut être lancé avec la commande:
Les paramètres n1, n2 et n3 correspondent aux dimensions du domaine modélisé, nb_threads au nombre de threads sur lesquels il est lancé, nb_iter le nombre d'itérations réalisées dans le programme et cbx, cby et cbz sont les paramètres de cache blocking.
Les paramètres n1, n2 et n3 correspondent aux dimensions du domaine modélisé, nb_threads au nombre de threads sur lesquels il est lancé, nb_iter le nombre d'itérations réalisées dans le programme et cbx, cby et cbz sont les paramètres de cache blocking.
...
@@ -56,7 +56,7 @@ L'exécutable retourne alors dans le terminal la durée totale d'exécution, le
...
@@ -56,7 +56,7 @@ L'exécutable retourne alors dans le terminal la durée totale d'exécution, le
## Utilisation de ACO.py
## Utilisation de ACO.py
Comme cela vient d'être expliqué, iso3dfd prend de nombreux paramètres en arguemtents. L'objectif d'ACO.py est d'otpimiser les paramètres n1, n2, n3, cbx, cby et cbz. L'algorithme ACO.py est basé sur un algorithme de colonie de fourmis et tous les paramètres (taille des colonies, initilisation des phéromones, nb_threads, etc.) peuvent être directement renseignés dans la section __name__ == "__main__" de ACO.py.
Comme cela vient d'être expliqué, iso3dfd prend de nombreux paramètres en arguments. L'objectif d'ACO.py est d'optimiser les paramètres n1, n2, n3, cbx, cby et cbz. L'algorithme ACO.py est basé sur un algorithme de colonie de fourmis et tous les paramètres (taille des colonies, initilisation des phéromones, nb_threads, etc.) peuvent être directement renseignés dans la section `__name__ == "__main__"` de ACO.py.
Pour lancer ACO.py en parallèle sur plusieurs processus, il faut lancer un batch avec la commande sbatch :
Pour lancer ACO.py en parallèle sur plusieurs processus, il faut lancer un batch avec la commande sbatch :
...
@@ -64,7 +64,7 @@ Pour lancer ACO.py en parallèle sur plusieurs processus, il faut lancer un batc
...
@@ -64,7 +64,7 @@ Pour lancer ACO.py en parallèle sur plusieurs processus, il faut lancer un batc
Il faut alors choisir N et n ainsi que la commande mpirun du launch.sh. Les paramètres de batch par défaut sont N=1, n=2 et np = 2. Avec ces paramètres et sur le Cluster de Metz, ACO est lancé sur un seul noeud, et parallélisé en deux processus. Chaque processus est déployé sur un socket et iso3dfd est exécuté sur huit threads.
Il faut alors choisir `N` et `n`, et vérifier la correspondance avec `np` dans la commande mpirun du launch.sh. Les paramètres de batch par défaut sont `N=1`, `n=2` et `np = 2`. Avec ces paramètres et sur le Cluster de Metz, ACO est lancé sur un seul noeud, et parallélisé en deux processus. Chaque processus est déployé sur un socket et iso3dfd est exécuté sur huit threads.