Skip to content
Snippets Groups Projects

Update README.md

Merged GENAUD STEPHANE requested to merge genaud-main-patch-09768 into main
Compare and
1 file
+ 5
15
Preferences
Compare changes
+ 5
15
@@ -131,25 +131,15 @@ et l'exécution de `graph` sur ce jeu de données.
## Performances
Voici quelques références de performances obtenues sur la plateforme OpenStack.
**Edit** : concernant la parallélisation MPI, étant donné la performance tout à fait basique des communications sur la plateforme OpenStack,
le temps gagné en partageant les calculs sur plusieurs hosts est très faible en regard des temps de communications.
L'utilisation d'OpenMP seul doit amener un gain.
Les performances de références précedemment publiées étaient fausses.
La plateforme qui a été redémarrée l'a été sur une distribution Ubuntu 18.02 alors qu'elle l'était précédemment sur une Ubuntu 20.02. Ceci ne devrait pas changer fondamentalement les choses, mais la version d'openmpi sur Ubuntu 18.02 tente de sélectionner une interface réseau infiniband (`openib`) et je préfère remettre l'environnement original pour être certain du comportement.
| | | hosts | processes | threads/proc | 1000 | 3000 | 10000 |
|-----|-----|-------|-----------|--------------|-------------|-------------|--------------|
| (a) | seq | 1 | 1 | 1 | 0.73 | 19.90 | 733.17 |
| (b) | par | 4 | 4 | 4 | 0.10 (0.03) | 1.70 (0.07) | 70.66 (1.27) |
| (c) | par | 4 | 8 | 4 | | | 182.7 (0.61) |
| (d) | par | 8 | 8 | 4 | 0.10 (0.05) | 1.14 (0.12) | 33.40 (1.21) |
Les 3 dernières entêtes de colonnes désignent la taille du jeu de données: *1000* pour le fichier `1000x1000.adj`.
Dans ces colonnes, figurent les temps d'exécution de la partie calculatoire en secondes. Pour le séquential c'est *Compute*, dans la version parallèle testée la première valeur est *Compute+Comm*,
c'est-à-dire la durée totale de la partie calculatoire qui comprend des communications, la deuxième valeur entre parenthèse donne uniquement la durée cumulée des communications *Comm* mesurée par 1 thread sur un processus (sachant que cette valeur est sensiblement la même dans tous les processus).
Il faut lire:
- (a) : exécution séquentielle (1 host, 1 processus), pas d'OpenMP donc 1 thread.
- (b) : exécution parallèle avec `-n 4` avec 4 hosts dans `hostfile`, chaque host a `slots=1` donc on a 1 processus par host, chaque processus utilisant 4 threads pour openmp.
- (c) : exécution parallèle avec `-n 8` avec 4 hosts dans `hostfile`, chaque host a `slots=2` donc on a 2 processus par host, chaque processus utilisant 4 threads pour openmp. Les résultats sont mauvais.
- (d) : exécution parallèle avec `-n 8` avec 8 hosts dans `hostfile`, chaque host a `slots=1` donc on a 1 processus par host, chaque processus utilisant 4 threads pour openmp.
## Bibliographie