... | ... | @@ -47,3 +47,27 @@ parallel mon_script fichier{}.txt ::: 0 1 2 |
|
|
```
|
|
|
|
|
|
## OpenMP ou MPI ? ##
|
|
|
Il est aussi possible d'utiliser une machine OpenMP pour faire tourner un code MPI (qui peut le plus peut le moins), i.e. un code fait a priori pour tourner sur un cluster, c'est-à-dire une machine à mémoire distribuée (et non partagée). Il faut alors utiliser l'outil `mpirun` (avec en option le nombre d'occurence de process) pour le lancement du *process* et utiliser `mpicc` pour la compilation :
|
|
|
|
|
|
### Avec GNU ###
|
|
|
```bash
|
|
|
mpicc -O2 pi_mpi.c # MPI for gcc (see mpicc -showme for args)
|
|
|
time mpirun -np 4 ./a.out
|
|
|
```
|
|
|
|
|
|
### Avec Intel ###
|
|
|
Pour les options, voir sur [open-mpi.org](https://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0).
|
|
|
```bash
|
|
|
export OMPI_CC=icc
|
|
|
mpicc -m64 -O3 -Wall -fPIC -msse4.2 -restrict -fargument-noalias-global pi_mpi.cc
|
|
|
time mpirun -np 4 ./a.out
|
|
|
```
|
|
|
|
|
|
### Autres options de `mpirun` ###
|
|
|
* Option `-f` suivi d'un nom de fichier contenant les noms des machines pouvant accueillir un process MPI
|
|
|
* Option `-host` suivi du nom de la machine
|
|
|
On peut faire également plus compliqué, par exemple :
|
|
|
```bash
|
|
|
mpirun -n 3 -host localhost ./a.out : -n 3 -host mic0 /home/beau/a.out
|
|
|
```
|
|
|
où l'on crée 3 process sur `localhost` et 3 process sur la machine `mic0` en spécifiant à chaque fois où trouver l'exécutable. |
|
|
\ No newline at end of file |