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
Partager