Babel : 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.

Remarques :

  • Quelques sous-programmes de LAPACK, en mode numérique I4S4D8, sont inclus dans la bibliothèque ESSL.
  • Parmi ceux-ci certains sont parallèles de type SMP (en mémoire partagée). On peut avoir accès à ces sous-programmes LAPACK parallélisés en faisant l'édition de liens avec la bibliothèque ESSL SMP.
  • La bibliothèque LAPACK fait appel à des sous-programmes de ESSL (pas seulement les BLAS) pour des raisons d'optimisation.

LAPACK est écrit en Fortran 77.

Versions installées

  • LAPACK 3.3.1 (version par défaut)
  • LAPACK 3.2.2
  • LAPACK 3.1.1

Utilisation

Édition de liens Mode numérique Nom des sous-programmes Mode d'adressage
$ module load lapack $ mpixlf90_r call_lapack.f I4S4 S… / C… 32
I4D8 D… / Z…

Exemple

$ cat myprogram.f90
...
  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
$ mpixlf90_r myprogram.f90