La bibliothèque LAPACK

Description

LAPACK est un ensemble de sous-programmes Fortran permettant de résoudre des problèmes d'algèbre linéaire (systèmes denses). LAPACK repose sur les BLAS. LAPACK est le successeur des anciennes bibliothèques LINPACK et EISPACK.

Version installée

Caractéristiques

Utilisation

La compilation et l'édition de liens s'effectue à l'aide de la commande module.

Utilisation de LAPACK sans l'interface LAPACK95
Compilation et Édition de liens Mode numérique Nom des sous-programmes Mode d'adressage
$ module load lapack
$ xlf_r call_lapack.f
I4S4 S... / C... 32/64
I4D8 D... / Z...

Utilisation de LAPACK avec l'interface LAPACK95
Compilation et édition de liens Mode numérique Nom des sous-programmes Mode d'adressage
$ module load lapack95
$ xlf_r call_lapack95.f
I4 LA_... 32/64

Remarque :

Pour utiliser un pilote de LAPACK avec l'interface LAPACK95, vous devez insérez dans votre programme l'instruction :
use f95_lapack, only: <le nom du pilote>

Exemples

Voici l'exemple d'une même résolution avec et sans l'interface LAPACK95. Il s'agit de la résolution d'un système linéaire réel symétrique en double précision.

Sans l'interface LAPACK95 :

$ cat call_dsysv.f
...
  integer, parameter:: n = 1000
  double precision a(n,n), b(n)
  integer ipiv(n), info, lwork
  double precision, allocatable:: work(:)
...
  ! Get the optimal size of the WORK array:
  allocate(work(1))
  call DSYSV('U', N, 1, A, n, IPIV, B, n, work, -1, INFO)
  print *, "info = ", info
  if (info /= 0) stop
  lwork = WORK(1)
  print *, "lwork = ", lwork
  deallocate(work)

  ! Solve the set of equations:
  allocate(work(lwork))
  call DSYSV('U', N, 1, A, n, IPIV, B, n, WORK, LWORK, INFO)
  print *, "info = ", info
  if (info /= 0) stop
...
$ module load lapack
$ xlf_r -qfree call_dsysv.f

Avec l'interface LAPACK95 :

$ cat call_sysv.f
...
  use f95_lapack, only: la_sysv
...
  integer, parameter:: n = 1000
  double precision a(n,n), b(n)
...
  call la_SYSV(A, B)
...
$ module load lapack95
$ xlf_r -qfree call_sysv.f

Remarquez que vous ne gérez pas de tableau de travail avec LAPACK95. Remarquez aussi que, avec l'interface LAPACK95, nous avons volontairement omis l'argument facultatif info. Dans ce cas, le programme s'arrête et affiche info s'il y a un problème. Cf. Error Handling.

Documentations


© CNRS - IDRIS, 23/04/2012