Utilisation de fork pour produit de matrices
Jérémy
-
fattoum -
fattoum -
Comment paralléliser le calcul d'un produit de 2 matices carrées avec l'utilisation de fork (en langage C). La parallélisation doit être maximale?
Merci d'avance.
Merci d'avance.
1 réponse
-
Bonjour,
Pour que la parallélisation soit max, il faut N au carré processus. (N fois N est la taille de la matrice). Chaque processus (i,j) calcule le produit scalaire de la ligne i dans la première matrice et la colonne j de la deuxième matrice.
Produit_scalaire(int i, int j){
...
}
main(){
..
for (i=0; i<N;i++)
for (j=0;j<N;j++)
switch(fork()){
case -1 : perror("fork"); exit(1);
case 0 : R[i](j] = Produit_Scalaire(i,j); exit(1);
}
while(wait(NULL)!=-1) ;
}