Fortran: BLAS ATLAS

Aus testwiki
Version vom 10. März 2011, 09:42 Uhr von imported>Dirk Huenniger
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Fortran:Vorlage: NavigationMain



Vorlage:Wikipedia

Allgemeines

Die Basic Linear Algebra Subprograms (BLAS) stellen eine Sammlung von Unterprogrammen für die Vektor- und Matrizenrechnung dar.

  • Level 1: Skalar-Vektor-, Vektor-Vektor-Operationen
  • Level 2: Matrix-Vektor-Operationen
  • Level 3: Matrix-Matrix-Operationen

Die Automatically Tuned Linear Algebra Software (ATLAS) ist ein um einige LAPACK-Funktionen erweitetertes BLAS-Paket und bietet die Möglichkeit, automatisiert eine rechneroptimierte Algebra-Bibliothek zu erzeugen.

Installation von BLAS

BLAS wird in Form von Fortran-Quellcodedateien in einem gepackten tar-Paket zur Verfügung gestellt. Ein Makefile zur Generierung einer Bibliotheksdatei wird nicht mitgeliefert. Eine derartige Bibliotheksdatei kann aber einfach selbst erstellt werden. Eine Anleitung findet sich z.B. auf der gfortran-Dokumentationsseite. Die notwendigen Schritte sind:

  1. blas.tgz downloaden
  2. Dieses Paket in ein leeres Verzeichnis entpacken
  3. Bibliothek erstellen ("shared library" oder "static library"):
    1. In Form einer "shared library":
      gfortran -shared -O2 *.f -o libblas.so -fPIC 
    2. In Form einer "static library":
      gfortran -O2 -c *.f 
      ar cr libblas.a *.o 
  4. Die daraus resultierende Bibliotheksdatei in ein geeignetes Verzeichnis verschieben (z.B. /usr/lib/ oder /usr/local/lib/)

Beispiele

Beispiel: Die Level 1-Funktionen sdot und dnrm2

Fortran:Vorlage: Pre2


Kompilieren und Linken:

gfortran bsp.f95 -lblas

Beispiel: Die Level 2-Subroutine sger

sger steht für:

  • s ... REAL
  • ge ... general matrix
  • r ... rank 1 operation

Mathematisch ist damit folgende Operation gemeint:

Aα𝐱𝐲T+A

wobei A eine mxn-Matrix ist, x und y stellen Vektoren dar.

Das nachfolgende Beispiel führt konkret folgende Rechnung aus: A=[2.01.0][1.00.0]+[1.01.02.07.0]

Fortran:Vorlage: Pre2

Weblinks


Fortran:Vorlage: NavigationMain