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 :

Vitesse inversion de matrice


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut Vitesse inversion de matrice
    Bonjour,

    Je suis sur un ordinateur avec un Intel Core 2CPU T5500 à 1.66 GHz, 2Go de mémoire vive un système d'exploitation 32 bit et je suis sous Vista. Mon compilateur Fortran est Absoft80.

    Je dois inverser des matrices de grande taille (>10000), et j'ai fait quelques tests pour voir la vitesse d'inversion avec Fortran. Auparavant je travaillais sous Gauss mais je voulais améliorer la rapidité de mes programmes.

    Résultat, j'obtiens une vitesse plus lente avec Fortran ce qui m'étonne beaucoup. Avec le programme ci-dessous, l'inversion d'une matrice 2000*2000 (avec une fonction de la bibliothèque IMSL) prend environ 90-100 secondes alors que sous Gauss cela prend environ 3 fois moins de temps (?!?). Je débute sous Fortran donc j'ai plusieurs questions :Est-ce normal ? Faut-il que je spécifie quelque chose de particulier au moment de la compilation qui modifierait beaucoup la vitesse ? Y-a-t-il une fonction d'inversion de matrice plus efficace ? Merci beaucoup d'avance.

    use linear_operators
    implicit none

    integer, parameter :: n=2000
    real :: t1,t2
    REAL, ALLOCATABLE, DIMENSION(:, :: A, x
    ALLOCATE(A(n,n))
    ALLOCATE(x(n,n))
    ! Generate a random matrix.
    A = rand(A)
    call CPU_TIME( t1 )
    ! Compute the matrix inverse.
    x = .i.A;
    call CPU_TIME( t2 )

    ! call WRCRN ('EVAL', 1, n, x, 1, 0)
    print *,t2 - t1


    end

  2. #2
    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 : 85
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Pourquoi veux-tu inverser une matrice? Cela n'est presque jamais nécessaire, ni même utile.
    Jean-Marc Blanc

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    ça arrive très souvent en économétrie bayésienne par exemple (voir les articles de Chib pour en avoir une idée)...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Faut-il que je spécifie quelque chose de particulier au moment de la compilation qui modifierait beaucoup la vitesse ?
    Oui. Tous les compilateurs proposent un certain nombre d'options de compilations qui optimisent le code (voir la doc du compilateur). Par rapport au cas non optimisé on obtient généralement des accélérations assez significatives.

    Ehouarn

  5. #5
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    'ajoute, à ce jour le compilo le mieux optimisé que je connaisse est Ifort (intel fortran) sous unix... j'ai fait le test avec mon code de calcul (en gros résolution de système linéaire (non parrallèle) et j'ai un gain de 20% sur le temps de calcul simplement en passant de gfortran à ifort (plus quelques optimisation)
    de plus certain compilateur (comme ifort) font de la "parallèlisation" automatique, en gros, ils vectorise certaine boucle etc...

    mais si tu veux vraiment faire un gain de vitesse, tu peux commencer par changer d'algo de résolution... ou bien cherche à parallelisé (plus gros boulot)...

  6. #6
    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 : 85
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    les articles de Chib
    Où les trouve-t-on sur le Web?
    Jean-Marc Blanc

Discussions similaires

  1. Inversion de matrice
    Par mhooreman dans le forum Mathématiques
    Réponses: 6
    Dernier message: 26/10/2006, 19h35
  2. Probleme d'inversion de matrice subtil
    Par babycrash dans le forum C
    Réponses: 2
    Dernier message: 02/08/2006, 18h41
  3. inversion de matrice?
    Par babycrash dans le forum C
    Réponses: 17
    Dernier message: 21/06/2006, 23h18
  4. Comment inverser une matrice H(2,2) ?
    Par fafa624 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 11h23
  5. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 19h38

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