Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/09/2012, 06h34   #1
yann_m
Membre du Club
 
Inscription : septembre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 95
Points : 40
Points : 40
Par défaut Inverser une matrice en parallele quelles librairies ?

Bonjour a vous,

je suis actuellement entrain de paralleliser un code dans lequel je dois inverser de grosses matrices.
Aussi, aurais-je aime savoir si quelqu'un peut me renseigner sur les differents types de librairies open sources concuent a cet effet, et utilisant de preference OpenMP.
Enfin ou se procurer des references (liens ou documents) contenant des exemples de mises en oeuvres de l'utilisation de tels librairies ?

Merci par avance.

Bien cordialement,
Yann.
yann_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2012, 08h50   #2
Marlan
Membre habitué
 
Inscription : mai 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 111
Points : 109
Points : 109
Salut,

Tu peux par exemple utiliser OPENMP à l'appel de ta subroutine et non en son sein. Ainsi la parallélisation sera efficace, sans que tu n'aies à te poser la question du fait que la subroutine soit parallèle ou non.

ie : Ne pas paralléliser dans la subroutine mais faire entrer en argument des portions de tableau associés à chaque THREADS

Ex : Si ma subroutine s'appelle INV_MAT(A,B) avec A la matrice de départ et B la matrice d'arriver, il suffit de faire rentrer une matrice partagée entre les différents threads pour B.

Note : cette astuce ne marche que dans le cas de résolutions explicites de matrices [les coefficients de B s'expriment directement et uniquement en fonction de ceux de A] (pas avec des méthodes de pivots par exemple)

En espérant avoir pu t'aider,

Marlan
Marlan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2012, 01h52   #3
yann_m
Membre du Club
 
Inscription : septembre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 95
Points : 40
Points : 40
Bonjour,

merci pour ta réponse. Ca aurait été en effet absolument parfait, puisque ce que tu me suggères correspond exactement à ce que je souhaite faire :

faire entrer en argument des portions de tableau associés à chaque THREADS

Cependant outre les inversions de matrices, j'ai également des décompositions LU à réaliser, et par souci d'optimisation je souhaite pouvoir utiliser une librairie de type Lapack (parallèle) fonctionnant avec openMP.

Merci beaucoup,
Yann.
yann_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2012, 08h49   #4
Dut
Responsable MATLAB & Hardware/PC

 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 15 093
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 15 093
Points : 31 152
Points : 31 152
Je ne code pas en Fortran mais tu peux jeter un œil à PLASMA
__________________
Identification de processeur sous MATLAB (3/3) Identification de processeur sous MATLAB (2/3) Mes contributions MATLAB (R2009a - Windows & Linux)

J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2012, 13h52   #5
FR119492
Rédacteur/Modérateur
 
Jean-Marc Blanc
Inscription : avril 2007
Messages : 2 838
Détails du profil
Informations personnelles :
Nom : Jean-Marc Blanc
Âge : 72

Informations forums :
Inscription : avril 2007
Messages : 2 838
Points : 3 972
Points : 3 972
Salut!
Citation:
je dois inverser de grosses matrices
A quoi cela sert-il d'inverser ces matrices?
Jean-Marc Blanc
__________________
Calcul numérique de processus industriels
Formation, conseil, développement

Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)
FR119492 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 08h19   #6
Ehouarn
Membre éclairé
 
Inscription : mars 2007
Messages : 326
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 326
Points : 378
Points : 378
Bonjour,

Il y a PLAPACK en contexte mémoire distribuée (MPI) qui semble pas mal. Peut-être que l'utiliser en mode mixte OpenMP/MPI est possible (moyennant sans doute une certaine dose d'huile de coude...).

Bonne continuation.
Ehouarn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 09h44   #7
yann_m
Membre du Club
 
Inscription : septembre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 95
Points : 40
Points : 40
Bonjour,
merci pour vos reponses. Pour repondre dans l'ordre :

Dut, je viens de compiler plasma sur ma machine et de feuilleter rapidement la doc. Ca m'a l'air au poil ! Malgre tout, je ne vois rien concernant le link de ces libs lors de la compilation. Je vais creuser un peu.

Pour repondre a Jean-Marc j'ai ecrit un code d'elements finis qui utilise un algorithme de type Newton-Raphson pour resoudre une equation differentielle non-lineaire. Je dois donc a resoudre le systeme [A]{X}={Y}, avec [A] une grosse matrice, et {.} des vecteurs. Inversion de matrice est donc un abus de language de ma part. Il s'agit de la resolution du systeme suivant [A]{X}={Y}

Enfin Ehouarn j'ai en effet vu ce type de solution, notament avec ScaLapack. Cependant je ne suis vraiment pas un specialiste en la matiere, et j'avoue que ce type de chose depasse tres largement mes competences...

Merci beaucoup,
Yann.
yann_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2012, 09h44   #8
moomba
Membre du Club
 
Avatar de moomba
 
Inscription : avril 2007
Messages : 107
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 107
Points : 42
Points : 42
Simple petit ajout : si tu ne cherche qu'à résoudre le système, une méthode itérative type PCG ou BICGSTAB semble plus indiqué, surtout si ta matrice est grosse en mémoire. Tout dépend de l'allure de ta matrice, mais avec des éléments fini ça doit être bon...
Ces méthodes sont facilement parallélisable sur des architectures parallèles avec MPI ou OpenMP.
__________________
"Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)
moomba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2012, 15h22   #9
Bast24
Invité de passage
 
Inscription : septembre 2012
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 4
Points : 1
Points : 1
Citation:
Envoyé par yann_m Voir le message
Bonjour,

merci pour ta réponse. Ca aurait été en effet absolument parfait, puisque ce que tu me suggères correspond exactement à ce que je souhaite faire :

faire entrer en argument des portions de tableau associés à chaque THREADS

Cependant outre les inversions de matrices, j'ai également des décompositions LU à réaliser, et par souci d'optimisation je souhaite pouvoir utiliser une librairie de type Lapack (parallèle) fonctionnant avec openMP.

Merci beaucoup,
Yann.
Lapack et scalapack fonctionnent bien avec MPI, je sais pas trop avec OpenMp
Bast24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h47.


 
 
 
 
Partenaires

Hébergement Web