Master 2 Matis Année 2009-2010, MIS 7 Sujet d’étude n°2 Ce travail est à rendre pour fin janvier 2010 par mail à : [email protected] Traiter deux Problèmes au choix. Problème 1 On dispose de p processeurs organisés linéairement. C'est-à-dire que chaque processeur dispose d'une zone de mémoire propre qui ne peut être écrite que par lui-même. De plus, cette zone ne peut être lu que par son voisin de droite, ou celui de gauche : … On veut utiliser l’architecture précédente pour multiplier une matrice A de dimension n.n par un vecteur x à n composantes (Pour simplifier, on suppose que la taille de la matrice est divisible par p). 1/ Proposer une décomposition données et un algorithme permettant de calculer A.x sur réseau de processeurs précédent. Remarque : Exprimer votre algorithme par un pseudo-code. En annexe on propose un langage de pseudo-code permettant d’exprimer un programme séquentiel. Ajouter à ce langage les commandes permettant d’exprimer le parallélisme sur architecture précédente. (Indication : Des instructions de type send, receive sont envisageables) 2/ Quelle est la complexité de votre algorithme ? Quelle est son efficacité (speedup) ? Problème 2. On considère le graphe de taches ci-dessous. On veut applique l’algorithme Colin-Chrétienne pour obtenir un ordonnancement optimal. Donner les bornes correspondant aux dates au plutôt possibles. Donner le diagramme de Gantt correspondant à cet ordonnancement optimal. 1 est n° de la tache 2 est le coût de communication entre la tache 5 et la tache 7 3 est le coût de la tache n° 1 Problème 3. On cherche à résoudre un système linaire A.x = b par une méthode itérative, le système linaire considéré est le suivant : 1 2 1 1 0 0 0 0 0 1 2 1 1 0 0 0 0 1 1 2 1 1 0 0 0 0 1 1 2 1 1 0 0 0 0 1 1 2 1 1 0 0 0 0 1 1 2 1 1 0 0 0 0 1 1 2 1 0 0 0 0 0 1 1 2 x1 x2 x3 x4 x5 x6 x7 x8 = 3 4 5 5 5 5 4 3 La méthode est basée sur l’itération suivant : x1 = (3 - x2 - x3)/2 x2 = (4 - x1 - x2 - x3)/2 xi = (5 - xi-2 - xi-1 - xi+1 - xi+2) / 2 x7 = ( 4 - x5 - x6 - x8)/2 x8 = (3 - x6 - x7)/2 pour i =3,4,…,6 On suppose que le teste de la convergence est assuré par une fonction t(x,y) qui retourne vrai si la distance (métrique) entre x(x1,.. xi , …x8) et y(y1,... yi , …y8) est suffisamment petite sinon faux. A/ Dans le cas où l’on voudrait utiliser une méthode itérative asynchrone avec 5 processeurs un maître et 4 esclaves, décrire un graphe de taches correspondant au calcul d’une itération en indiquant à chaque sommet son coût de calcul (nombre d’opérations) et chaque arc le coût de communication. B/ Écrire un pseudo-code de type MPI résolvant ce problème. Annexe : Pseudo-code Un programme est une suite d’actions composées comme suite : debut action1; action2; … actionn; fin ; Une action peut être : un appel d’une fonction ou d’une procédure (une procédure est un programme); une opération arithmétique. la création par le processus maître d’un processus esclave une opération de communication (envoyer, recevoir) ; une opération d’entré/sortie (read/write) une structure de choix : si condition alors action1 sinon action2 fin_si ; une structure itérative qui est une des 3 structures suivantes : pour i = 1 à n faire action fin_pour; tantque condition faire action fin_tantque; repeter action jusq_a condition; La structure de données qui est souvent manipulée est la structure de tableau sur cette structure on admet les opérations suivantes : 2