MPI part 2 - Travaux Pratiques
Min/Max
Le but de cet exercice est de manipuler des communications collectives avec MPI.
Le programme min_max crée un tableau d'entiers initialisés à des valeurs aléatoires, puis cherche les valeurs minimum et maximum.
Pour cet exercice, on souhaite paralléliser le programme avec MPI en n'utilisant que des communications collectives. Une fois le programme parallélisé, le rang 0 diffusera le tableau à traiter, puis chaque rang MPI cherchera les minimum et maximum d'une partie du tableau, et les resultats seront enfin transférés au rang 0.
Modifiez le programme min_max.c afin d'initialiser MPI, et de calculer, en fonction du rang MPI, les bornes inférieure et supérieure que le processus traitera.
Dans un premier temps, affichez le rang du processus MPI et les bornes traitées. Assurez vous que toutes les cases du tableau seront traitées.
Projet
Le but de cet exercice est de travailler à la parallélisation de votre projet avec MPI. Pour cela, analysez les sources de parallélisme de l'application et identifiez les synchronisations nécessaires.
En fonction du programme à paralléliser, plusieurs approches peuvent être possibles. Estimez la fréquence des communications et la quantité de données à échanger. Est-il possible de "cacher" le coût des communications avec des communications non-bloquantes ? Vaut-il mieux utiliser des communications point à point ou des communication collectives ?