Fortran 90/95

Aus Physik
Zur Navigation springen Zur Suche springen

Welche Compiler gibt es?

GNU Fortran

gfortran wird durch Debian zu Verfügung gestellt, die aktuell verwendete Version kann durch "gfortran -v" festgestellt werden.

Zusätzlich sind in userem System noch weiter Versionen installiert, die über eine angehängte Nummer erkennbar sind (z.B. gfortran-4.7.0). Die angebotenen Versionen sich durch die command completion in der shell leicht zu finden.

Lahey/Fujitsu

Sie rufen den Lahey/Fujitsu Compiler für Fortran 95 am einfachsten über das Kommando f95-lah auf - dabei werden einige Pfade eingestellt und danach alle Parameter an den Compiler weitergereicht.

Wir besitzen nur eine Lizenz für den Rechner faepop05.tu-graz.ac.at.

Wenn Sie allerdings Werkzeuge verwenden, die ihrerseits Aufrufparameter modifizieren, wird das möglicherweise nicht genügen. Manchmal reicht es, die Schritte von f95-lah selbst auszuführen - wenn sie als shell die bash benützen wären das auf einem der 64-Bit-Rechnern die Anweisung source /afs/itp.tugraz.at/opt/lahey/8.1b/bash_laheyfort_setup zur Initialiserung; die Versionsnummer müssen sie dabei gegebenenfalls ändern. Den Compiler selbst wird dann einfach mit lf95 aufgerufen.

Wenn man folgende Kommandosequenz in seinen Startup-Skripten (~/.bashrc) unterbringt, kann man sich das auch sparen - allerdings funktionieren dann einige andere Programme (zB "pdftk") nicht mehr:

case $(dpkg --print-architecture) in
   i386)
       LD_LIBRARY_PATH=/afs/itp.tugraz.at/opt/lf95/6.2d/lib/
       ;;
   amd64)
       LD_LIBRARY_PATH=/afs/itp.tugraz.at/opt/lahey/8.1b/lib64/:/afs/itp.tugraz.at/opt/lf95/6.2d/lib/
       ;;
esac
export LD_LIBRARY_PATH

Intel

in Arbeit

f95-intel, ifort

andere

nicht mehr lauffähig auf unseren Computern:

  • f90-abs
  • f90-pgi, pgf90
  • f95-nag, f95

Probleme

gfortran 4.6.1 4.6.2

Die Libraries von gfortran 4.6.1 und 4.6.2 kollidieren in manchen Fällen mit Systemprogrammen und deren Libraries. Daher wurden sie aus dem Standardpfad für Libraries entfernt. Wenn sie Compiler der GNU COmpiler Collection 4.6.[12] verwenden, müssen sie daher den Pfad explizit angeben. Das können sie über die Environment-Variable LD_LIBRARY_PATH oder komfortabler bereits beim Linken mit der Option "-Wl,-rpath,/afs/itp.tugraz.at/opt/gcc/4.6.2/arch-amd64/lib64/" setzen.

Linken bringt eine Fehlermeldung über fehlende Funktion: undefined reference to `s_wsfi'

Weil g95 derzeit noch nicht uneingeschränkt benutzbar ist, verwenden wir für Fortran 90 und Fortran 95 fast ausschließlich die kommerziellen Compiler. Diese sind aber in großem Umfang auf Bibliotheken angewiesen, die mit einem Compiler aus der GCC (GNU Compiler Collection, bestehen aus gcc, g77, ...) erstellt wurden und bestimmte Funktionen aus der Runtime-Umgebung der GCC benötigen.

Deshalb ist es manchmal notwendig die Bibliotheken libg2c und (seltener) libgcc zusätzlich mitzulinken. Diese Libraries sind aber vom verwendeten System und dem Compiler-Release abhängig, den korrekten Pfad findet ihr mit dem Kommando gcc -print-file-name=libg2c.a . Um ein Beispielprogramm der NAG-Libs mit dem F95-Compiler von Lahey verwende ich zum Beispiel folgendes Makefile:

  EXTRALIBS=$(shell gcc -print-file-name=libg2c.a) $(shell gcc -print-file-name=libgcc.a)
  g01aafe-lahey: g01aafe.f
          f95-lah g01aafe.f -o g01aafe-lahey \
                  -L /afs/itp.tugraz.at/opt/NAG/2003/fllux20dg/ -lnag \
                  $(EXTRALIBS)