IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Inverser une matrice en parallele quelles librairies ?


Sujet :

Fortran

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Points : 77
    Points
    77
    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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    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.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 160
    Points
    53 160
    Par défaut
    Je ne code pas en Fortran mais tu peux jeter un œil à PLASMA
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « 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)

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    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)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    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.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    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.

  8. #8
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    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)

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/11/2011, 13h35
  2. [Débutant] Problème pour inverser une matrice
    Par alexov dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/06/2011, 18h53
  3. Inverser une matrice 120*120 excel/vb
    Par Grego1re dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/07/2010, 14h46
  4. comment inverser une matrice (array)
    Par bonomsoleil dans le forum C
    Réponses: 7
    Dernier message: 10/11/2006, 21h53
  5. Comment inverser une matrice H(2,2) ?
    Par fafa624 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo