Inverser une matrice avec plusieurs processus

JinaJumbo Messages postés 1 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 avril 2009 - 29 avril 2009 à 16:12
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 8 mai 2009 à 22:09
Bonjour,

Pour un projet, je dois écrire un programme en C sous Linux qui permet d'inverser une matrice partitionnée, ie décomposer ma matrice en plusieurs sous matrices plus petites et faire les traitements sur ces sous matrices en utilisant fork, wait et exec de Linux.
Pour ce faire, j'établis un graphe d'exécution pour mes traitements qui portent sur ces sous matrices que je présente ci dessous :

A = A11     A12
       A21     A22

E1 : Calcul de  H= Inverse(A11)E2 : calcul parallèle de I A21*H     &   J H*A12
E3: Calcul de K= I*A12
E3: Calcul de L = Inverse(A22-K)
E5 : calcul parallèle de X= (H+J*L*I)     &   Y= -J*L  & Z = -L*I

Alors mes questions, et j'espère que vous allez m'aider, parce que jusque là j'ai pas eu d'aide sont les suivantes:

Est-ce que je dois , pour chaque traitement, créer un processus ?
Comment je peux lancer cet ordonnancement en utilisant les fork en ayant une coopération pére fils?
Je sais que le dialogue entre les fils et le pére se faire par pipe, mais j'arrive pas à avoir une vue générale sur le programme que j'vais faire.

Je vous demande votre aide et je vous remercie d'avance.

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
8 mai 2009 à 22:09
Bienvenue,

Je crois qu'il peut s'avérer intéressant de créer des processus supplémentaires si et seulement si ils peuvent réaliser des calculs en parallèle avec ceux réaliser par le processus principal. Sinon, créer un processus et attendre qu'il ait fini pour lancer le processus suivant, aucun intérêt.

Processus principal                  processus additionel
calcul 1
résultat 1
calcul 2 (Nécessite résultat 1)
calcul 3                             calcul 4
résultat 3                           résultat 4
calcul 5 (Nécessite résultat 3 et 4)

résultat 5
0
Rejoignez-nous