Questions concernant la parallélisation
Durée estimée : 1h30
Notation sur 20 points

	On souhaite multiplier des matrices carrées (de taille identique) entre elles. Les matrices ne contiennent que des entiers. Le cœur de l’approche séquentielle de MAT-MULT(A, B) est le suivant : 
		
fonction	MAT-MULT(A, B)  C		// C est la matrice résultat
Entier n		// taille des matrices (il y a donc n*n cases)
Entier  i, j		// i est l’indice de ligne, j de colonne
pour i de 0 à n-1 faire
	pour j de 0 à n-1 faire
		C[i,j]  CalculCase(A, B ,i ,j)
	fin pour
fin pour
retourner C
fin
fonction	CalculCase(A, B, x, y)  r  		// r est un entier
entier temp = 0
pour i de 0 à n-1 faire
	pour j de 0 à n-1 faire
		temp  temp + (A[x, j] * B[i , y])
	fin pour
fin pour
retourner temp
fin

Question 1 : donner une version parallèle de MAT-MULT dans un système à mémoire commune avec p processus. Donner l’accélération par rapport à la version séquentielle (le temps mis pour une addition et une soustraction vaut pour tous les deux 1).

Question 2 : donner une version parallèle de MAT-MULT dans un système à mémoire privée et échange de messages avec p processus. Donner l’accélération par rapport à la version séquentielle (le temps mis pour une addition et une soustraction vaut pour tous les deux 1).

Question 3 : Soit la fonction MAT-CARRE(A)  C qui est strictement équivalente à MAT-MULT(A, A). Donner une version parallèle de MAT-CARRE dans un système à mémoire commune avec p processus.