0% ont trouvé ce document utile (0 vote)
83 vues2 pages

Exercices pratiques sur MPI en C

Transféré par

bochramiinfo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
83 vues2 pages

Exercices pratiques sur MPI en C

Transféré par

bochramiinfo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Fiche TD 5 (MPI)

Exercice 1 : Hello World distribué

Écrire un programme MPI où chaque processeur affiche un message "Bonjour, je suis le processeur X
parmi Y processeurs", où X est le rang du processeur et Y le nombre total de processeurs. Assurez-
vous que le programme fonctionne avec n'importe quel nombre de processeurs.

Exercice 2 : Somme parallèle

Créer un programme MPI où chaque processeur possède une valeur entière unique. Le processeur
maître (P0) calcule la somme de toutes les valeurs en utilisant MPI_Reduce.

Étapes :

1. Chaque processeur initialise une variable entière avec son rang (rang).
2. Utiliser MPI_Reduce pour envoyer toutes les valeurs au processeur maître.
3. Le processeur maître affiche le résultat.

Exercice 3 : Diffusion avec MPI_Bcast

Écrire un programme où le processeur maître (P0) initialise une valeur entière et la diffuse à tous les
autres processeurs à l'aide de MPI_Bcast. Chaque processeur affiche la valeur reçue.

- Modifier le programme pour que chaque processeur ajoute son rang à la valeur reçue avant de
l’afficher.

Exercice 4 : Calcul de la moyenne

Répartir un tableau de N valeurs entre plusieurs processeurs, calculer la moyenne des éléments du
tableau, et afficher le résultat final sur le processeur maître. Utiliser MPI_Scatter pour distribuer les
données et MPI_Reduce pour agréger la somme.

Étapes :

1. Initialiser un tableau d'entiers dans P0 (par exemple : {1, 2, 3, 4, 5, 6, 7, 8}).


2. Utiliser MPI_Scatter pour distribuer les sous-tableaux à chaque processeur.
3. Chaque processeur calcule la somme locale de ses éléments.
4. Agréger les résultats avec MPI_Reduce et calculer la moyenne.

Exercice 5 : Tri parallèle

Répartir un tableau d'entiers entre plusieurs processeurs pour qu'ils trient leurs sous-tableaux
localement. Ensuite, utiliser MPI_Gather pour regrouper les résultats sur P0.

Étapes :

1. Initialiser un tableau d'entiers aléatoires sur P0.

1
2. Utiliser MPI_Scatter pour répartir le tableau.
3. Chaque processeur trie son sous-tableau (utiliser une méthode simple comme le tri par
insertion).
4. Regrouper les résultats sur P0 avec MPI_Gather.
5. Sur P0, effectuer une fusion finale des sous-tableaux triés.

Exercice 6 : Barrière de synchronisation

Implémenter un programme où chaque processeur exécute une tâche spécifique, mais aucun
processeur ne passe à l'étape suivante tant que tous n'ont pas terminé la première étape. Utiliser
MPI_Barrier pour synchroniser les processeurs.

Exercice 7 : Produit matriciel distribué

Implémenter un programme parallèle qui calcule le produit de deux matrices A et B de manière


distribuée.

1. Répartir les lignes de la matrice A entre les processeurs avec MPI_Scatter.


2. Diffuser la matrice B entière à tous les processeurs avec MPI_Bcast.
3. Chaque processeur calcule sa partie du résultat.
4. Rassemblez les résultats avec MPI_Gather.

Exercice 8 : Calcul de π avec la méthode de Monte Carlo

Utiliser MPI pour estimer la valeur de π en générant des points aléatoires dans un carré de côté 2 et
en calculant le rapport des points à l'intérieur d'un cercle inscrit.

1. Chaque processeur génère un nombre défini de points.


2. Compter les points dans le cercle pour chaque processeur.
3. Agréger les résultats avec MPI_Reduce pour calculer π.

Exercice 9 : Maximum distribué

Implémenter un programme où chaque processeur possède un tableau d'entiers. Utiliser


MPI_Reduce pour trouver le maximum global parmi tous les éléments des tableaux.

Exercice 10 : Communication en anneau

Créer un programme où chaque processeur envoie un message entier à son voisin suivant dans un
anneau logique (dernier processeur envoie au premier). Utiliser MPI_Send et MPI_Recv.

Vous aimerez peut-être aussi