Maître de Conférences en Informatique à l'Université d'Angers
Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.
Implanter un algorithme de tri (ordre croissant) pour les entiers de type merge sort en utilisant OpenMP (cf cours 2).
Le programme prendra en paramètres :
Tester le temps d'exécution avec différentes tailles de tableaux.
Ecrire un programme mpi_tri_merge_sort.cpp qui utilise MPI pour trier un tableau de $N$ entiers grâce à l'algorithme merge-sort.
Utiliser $2^k$ instances du même programme pour trier ce tableau qui peut être représenté sous forme d'un vector de la STL.
La première instance, de rang 0, est le maître : il crée le tableau initial de $N$ éléments (valeurs aléatoires) et le divise en $2^k$ parties. Il envoie une partie des données à trier aux $2^k - 1$ esclaves.
Par exemple si $k = 3$ et $N = 64$, chaque processeur/processus traitera initialement $64 / 2^3$ = 8 éléments.
On passe ensuite par une phase de fusion des tableaux ainsi triés.
Par exemple, si on a $2^3$ processeurs et $N=64$:
puis
et enfin
On a donc un fonctionnement en $log_2(2^k) = k$ étapes de fusion.