Fortran für PCs unter Windows und Linux
Vorspann
Die Programmiersprache Fortran war in den 70ern und 80ern so populär,
dass Experten bereits glaubten, sie würde sich in wenigen Jahren zur
einzigen Programmiersprache von Bedeutung entwickeln. Heute wissen wir es
besser. Der Aufstieg anderer Sprachen zu Lieblingssprachen hat es um Fortran
etwas ruhig werden lassen. Aber im Gegensatz zu anderen Sprachen, die einmal
Hoffnungsträger waren, beispielsweise PL/1, Ada, etc. lebt Fortran
weiter. Die Sprache wird permanent weiterentwickelt und in Abständen in
Normen festgeschrieben, und für praktisch alle Plattformen stehen
hervorragende Compiler zur Verfügung - teilweise sogar kostenlos.
Ein Saurier zwar, aber jung geblieben
Dieser Artikel beschäftigt sich hauptsächlich mit Fortran 95. Mit diesem
Arbeitsnamen wird üblicherweise die aktuelle gültige Norm der
Programmiersprache Fortran bezeichnet. Es gibt daneben weitere Bezeichnungen wie
FORTRAN 77, FORTRAN 4, Fortran 90, Visual Fortran, Professional Fortran, usw.
Dabei handelt es sich teils um die Arbeitsnamen inzwischen veralteter/ungültiger
Normen, um die Namen von Compilern oder um die Namen von Dialekten der Sprache Fortran.
Die Programmiersprache Fortran gibt es seit Mitte der 50ger Jahre. Damals schrieb man
noch FORTRAN als Abkürzung für "Formular Translator".
Fortran's Hauptanwendungsgebiet sind seitdem Probleme im
technisch/naturwissenschaftlichem/numerischem Bereich.
Um die Ausbreitung herstellereigener Spracherweiterungen zu kanalisieren
und um die Sprache dem aktuellen Stand der Programmiertechnik anzupassen, wurde
die Sprache in 1966, 1978, 1991 und 1997 normiert; die jeweiligen Sprachdefinitionen
bekamen die Arbeitsnamen FORTRAN 66, FORTRAN 77, Fortran 90 und Fortran 95.
Dabei wechseln sich "große" und "weniger große" Revisionen der Norm ab.
FORTRAN 66 war die erste Fortran-Norm.
Sie beschrieb die gemeinsame Untermenge aller (wichtigen) damaligen Fortran-Dialekte.
Aber viele Hersteller entwickelten weiterhin eigene Spracherweiterungen. Dazu kam
die Tatsache, dass die Norm Fehler enthielt. FORTRAN 77 sollte Abhilfe schaffen,
indem neue Sprachmittel in die Sprache übernommen wurden, die die Datei- und
Textverarbeitung verbesserten und die mit Einschränkungen auch strukturierte
Programmierung ermöglichten.
Der große Durchbruch kam mit der Norm Fortran 90, die eine von Grund auf neue
moderne Fortran-Sprache beschrieb mit sehr effizienten Sprachmitteln für strukturierte
Programmierung, mit neuen Typkonzepten, mit dynamischen Feldern und Zeigern, mit
inhomogenen Datenstrukturen, mit neuen Kontrollstrukturen, mit Feldarithmetik,
mit neuen Konzepten für die Unterprogrammtechnik und nicht zuletzt mit sehr vielen
neuen Standard-Unterprogrammen, die insbesondere die Bearbeitung kompletter Felder
erleichtern sollten. Damit hatte der Fortran-Programmierer jetzt Instrumente an der Hand,
um sichere, lesbare Programme zu entwickeln. Die Aufwärtkompatibilität blieb
gewahrt. Jedes normgerechte FORTRAN77-Programm blieb auch als Fortran90-Programm
lauffähig.
Fortran 95 ist lediglich eine Konsolidierung der Sprache mit einer Vielzahl von
Klarstellungen, Korrekturen und Interpretationen von Fortran 90 und mit einer kleinen
Zahl neuer Sprachmittel (wie beispielsweise FORALL-Anweisung, pure und elementweise
wirkende Unterprogramme, Initialisierung von Datenstrukturen und Zeigern).
Und Konvergenz zu HPF (High Performance Fortran) war das Ziel.
Obwohl auch ein paar Sprachmittel aus der Sprache entfernt wurden (beispielsweise
reelle und doppelt genaue Laufvariablen, die Anweisungen PAUSE und ASSIGN, das
gesetzte GOTO und das H-Format), bleibt die Sprache weiterhin im großen
Ganzen aufwärtskompatibel. D.h., jedes normkonforme Fortran90-Programm
bleibt, von wenigen Ausnahmen abgesehen, als Fortran95-Programm lauffähig.
Die kommende Norm Fortran 2000 [1] ist wieder eine große
Revision der Programmiersprache Fortran. Sie wird vorraussichtlich Ende 2004
die aktuelle Norm Fortran 95 ablösen. Der Entwurf ist bereits weitgehend fertig
und beschreibt viele neue Sprachmittel, beispielsweise
- Verbesserungen benutzerdefinierter Datentypen (parametrisierbare Datentypen),
- Unterstützung objektorientierter Programmierung (Datenabstraktion,
Polymorphismus, Fallunterscheidung für Datentypen, usw.),
- Verbesserungen im Zusammenhang mit der Verarbeitung von Daten (allokierbare
Komponenten von Datenstrukturen, allokierbare Formalparameter, usw.),
- Ein-/Ausgabe-Verbesserungen (asynchrone Ein-/Ausgabe-Operationen,
Stream-I/O, Rundungskontrolle bei der Ausgabe, usw.),
- Ausnahmebehandlung und Gleitpunkt-Arithmetik gemäß IEC 60559 (IEEE 754),
- Interoperabilität mit C (von Fortran aus: Zugriff auf Hardware, von C aus:
Zugriff auf effiziente Fortran-Codes),
- Internationalisierung (4-Byte-Zeichensätze, usw.),
- Verbesserte Integration mit dem Gast-Betriebssystem,
Heutzutage gibt es hauptsächlich zwei typische Sorten Fortran-Anwender auf PCs.
Da sind einmal die Programmierer, die infolge der großen Leistungsfähigkeit
heutiger PCs ihre Anwendungen von Workstations oder sogar von Mainframes auf
ihren PC am Arbeitsplatz portiert haben, um dort ungestört von Kollegen rechnen zu
können. Und es gibt die Programmierer, die ihre Programmentwicklung für ganz
andere Plattformen - ja sogar für Hochleistungs- und Höchstleistungs-Rechner -
auf ihrem PC am Arbeitsplatz oder auch zuhause durchführen.
Scusi, parla Fortran?
Alle hier genannten aktuellen Versionen der Compiler sind für 32-Bit-PCs gedacht,
nur vom Intel- und vom NAG-Compiler gibt es zusätzlich eine Version für
64-Bit-Itanium-Prozessoren. Wir untersuchen nur Fortran95-Compiler,
weil Fortran 95 die einzige aktuell gültige Norm ist. Das ist keine
Einschränkung insofern, als alle betrachteten Compiler weiterhin
solche Programe verarbeiten, die lediglich Fortran90-konform oder sogar nur
FORTRAN77-konform sind.
- Absoft Pro Fortran
-
Version 7.5,
Entwicklungssystem für Fortran 95 unter Windows 9x/2000/NT/XP
und unter Linux.
- Compaq Visual Fortran
- Version 6.6,
Entwicklungssystem für Fortran 95 unter Windows 9x/2000/NT/XP.
- Intel
Fortran
- Version 6.0,
Fortran95-Compiler unter Windows 98/2000/NT/XP und unter Linux.
- Lahey LF95
- Version 5.7 (Windows) bzw. 6.1 (Linux),
Entwicklungsystem für Fortran 95 unter Windows 9x/2000/NT/XP
und unter Linux.
- NAG f95
- Version 4.2,
Entwicklungssystem für Fortran 95 unter Linux.
Wir haben die Version 4.1 getestet.
- NASoftware
FortranPlus
-
Version 2.5 (Windows) bzw. 2.22 (Linux),
Entwicklungssystem für Fortran 95 unter Windows 9x/2000/NT/XP
und unter Linux.
- Salford FTN95
- Version 3.0,
Entwicklungssystem für Fortran 95 unter Windows 9x/2000/NT/XP.
Or do you speak German?
Sorry but keiner der hier betrachteten Compiler spricht deutsch mit Ihnen. Das betrifft sowohl die
Software (beispielsweise die Fehlermeldungen und die grafischen Benutzerschnittstellen der
Entwicklungsumgebungen) als auch
die online-Dokumentation und die gedruckte Dokumentation. Es gibt keine deutschen Beschreibungen zur
Handhabung der Compiler und keine deutsche Beschreibung des jeweiligen Sprachumfangs.
Wenn Sie Mitglied (Student, Mitarbeiter, ...)
einer Universität oder anderen Forschungseinrichtung sind, dann könnten
Sie sich die preiswerte deutsche Sprachbeschreibung "Fortran95-Nachschlagewerk" des RRZN besorgen [2];
Bezugsquellen finden Sie unter http://www.rrzn.uni-hannover.de/Dokumentation/bezug.html.
Falls Sie neue Fortran-Programme entwickeln, dann sollten Sie Fortran 95 ohne die veralteten und
zum Teil gefährlichen Sprachmittel von FORTRAN 77 verwenden. Solch eine moderne
Fortran-Untermenge stellt die Programmiersprache F dar. Für F gibt es nicht nur eine
deutschsprachige Beschreibung [3], sondern auch kostenlose Compiler für diverse
Plattformen [7].
Absoft ProFortran
Es handelt sich tatsächlich um zwei separate hochoptimierende Fortran-Compiler, nämlich
einen Fortran95-Compiler, der den vollen Sprachumfang akzeptiert, und um einen FORTRAN77-Compiler,
mit dessen Hilfe man existierende Pakete verarbeiten kann, die Spracherweiterungen von
VAX/VMS, IBM/VS, Sun, Cray, Lahey und Microsoft enthalten. Die Optimierer sind speziell
für Intel-P4- und AMD-Athlon-Prozessoren zugeschnitten.
Win32-Variante
Neben den zwei Fortran-Compilern gibt es noch einen C/C++Compiler. Die Compiler sind
untereinander laufzeitkompatibel. Es kann auch MS-C-Code eingebunden werden.
Es gibt eine gemeinsame Entwicklungsumgebung, in die
auch die mitgelieferten Werkzeuge, wie Editor, Debugger, Linker, Make, usw., integriert sind.
Der Compiler und die Werkzeuge können wahlweise von der Kommandozeile aus oder
aus der Entwicklungsumgebung heraus gestartet werden. Windows-Programmierung wird einerseits via
Win32 API und andererseits via MRWE, eine Absoft-Schnittstelle, unterstützt.
Zum Lieferumfang gehören zwei Grafikbibliotheken für 2D/3D-Grafik (es handelt sich
dabei um reduzierte Versionen der SuperPlot Libraries der Fa. SuperPlot), eine Bibliothek mit
Unix- und VMS-kompatiblen Routinen für Zeit- und Datumsanfragen, für mathematische
Funktionen und für den Zugriff auf Dateien und Verzeichnisse; und es gibt Header-Dateien
für OpenGL-Anwendungen.
Und es gehören BLAS-, LAPACK95-, ATLAS- und HDF-Objektbibliotheken zum Lieferumfang.
Optional sind die IMSL-Bibliotheken (Mathematik & Statistik)
verfügbar, die aber nicht von VNI, sondern nur von Absoft bezogen werden können.
Für unseren Test standen die IMSL-Bibliotheken nicht zur Verfügung.
Neben dieser "Standard Version" des ProFortran-Compilers gibt es eine Version mit der Bezeichnung
"ProFortranMP". Diese Version enthält zusätzlich den Präprozessor VAST/F,
mit dessen Hilfe sich Fortran-Programme für den Einsatz auf Doppelprozessorsystemen
automatisch parallelisieren lassen. Es wird zwar von Laufzeitverbesserungen um bis zu 50%
berichtet, tatsächlich ist der Gewinn aber stark von der jeweiligen Anwendung abhängig.
Es kann sich sogar eine Verlängerung der Laufzeit ergeben.
Nicht von Pappe
Zum Test wurde uns lediglich eine download-bare "demonstration copy" zur Verfügung gestellt.
Ob der Kunde normalerweise auch gedruckte Handbücher erhält und ob sie brauchbar sind,
konnten wir nicht überprüfen. Jedenfalls gehören vier umfangreiche Online-Handbücher
zum Lieferumfang einschließlich einer FORTRAN77- und einer Fortran95-Sprachbeschreibung.
Die Syntaxtests haben wir zuerst mit dem Absoft Editor durchgeführt, der als
separates Tool mitgeliefert wird. Mit einem unserer Testprogramme (fatigue.f90) ist der Editor
mehrfach abgestürzt. Er hat auch noch andere Macken. So kann man zwar mehrere Quelldateien
zur Bearbeitung öffnen, man kann aber immer nur eine compilieren. Das Quelltextformat war auf
"fixed" - also FORTRAN77-Format - voreingestellt. Das heute übliche "freie"
Fortran90/95-Quelltextformat musste
für jede Quelldatei neu eingestellt werden. Auf diesen Editor kann man als eigenständiges
Tool gut verzichten, weil man die Fortran-Quelldateien von hier aus zwar compilieren aber nicht exekutieren kann
und weil dieser Editor sowieso als integriertes Tool in die Entwicklungsumgebung "Absoft Developer"
eingebaut ist.
Die Entwicklungsumgebung "Absoft Developer" findet man im Startmenue nicht sofort, weil sie dort
als "Compiler Interface" bezeichnet wird. Vom Developer aus kann man alle üblichen Tools aus
bedienen. Der Developer arbeitet mit Projekten; d.h. man muss immer erst ein Projekt einrichten, ehe man
sein Quellprogramm bearbeiten kann. Für die Compilation kann man einige Optionen selektieren,
die allerdings an unterschiedlichen Menüstellen versteckt sind.
Wenn man nur mal eben ein einziges Programm übersetzen und ausführen
will, ist das schon sehr mühsam. Da ist es einfacher, den Compiler gleich von der
Kommandoebene aus einzusetzen. Dazu kann man im Startmenue "Development Command Shell" selektieren,
dann werden für das sich öffnende DOS-Fenster gleich die richtigen Umgebungsvariablen gesetzt.
Lin32-Variante
Neben den zwei Fortran-Compilern gibt es einzelne Werkzeuge wie den Debugger. Compiler und
Debugger sind kompatibel mit Linux-Tools wie libc5, glibc2.0, glibc2.1, gcc, g77, f2c, Linker,
Assembler, Make, etc. Alle genannten Compiler und Werkzeuge sind laufzeitkompatibel; auch
gemischtsprachiges Debugging ist möglich. Als Grafik-Bibliothek wird DISLIN mitgeliefert.
Und es gehören BLAS-, LAPACK95-, ATLAS- und HDF-Objektbibliotheken zum Lieferumfang.
Optional sind die IMSL-Bibliotheken erhältlich, die aber nicht von VNI, sondern
nur von Absoft bezogen werden können. Für unseren Test standen die IMSL-Bibliotheken
nicht zur Verfügung. Für Doppelprozessor- und
Multiprozessor-Boards kann optional ein VAST-Präprozessor geliefert werden, der
die Autoparallelisierung durchführen kann.
Die online-Dokumentation besteht aus Manual Pages und aus Handbüchern im pdf-Format, die man
notfalls auch mal ausdrucken kann. Ansonsten waren Installation und Gebrauch der Software
ohne Überraschungen. Wir haben versuchsweise noch die NAG-FORTRAN77-Bibliothek (für
g77) installiert. Der Versuch scheiterte aber an diversen "Unsatisfied externals"
beim Binden des Verifikationsprogramms.
Compaq Visual Fortran
Nur Win32-Variante
Compaq Visual Fortran CVF ist seit 1999 der neue Name für das ehemalige
Digital Visual Fortran DVF, das wiederum der offizielle Nachfolger des 1997
eingestellten Microsoft Powerstation Fortran 4.0 war. Diese bewegte Vergangenheit
spiegelt sich darin wieder, dass CVF heutzutage das Produkt der Wahl ist,
wenn es darum geht, alte VAX- oder Powerstation-Spracherweiterungen zu verarbeiten.
Dieser Entwicklungsweg ist offensichtlich noch nicht zu Ende. Es gibt Zeichen, die besagen,
dass möglicherweise bald aus dem Frontend des CVF und dem Backend des Intel-Compilers
ein neues Produkt für 32-Bit- und 64-Bit-Intel-Architekturen gebastelt werden wird.
Die Quelltextkompatibilität mit Intel Fortran (in IA32) ist offensichtlich.
Der Compiler ist hochoptimierend.
Es gibt eine Entwicklungsumgebung, in die auch die üblichen Werkzeuge integriert sind.
Es ist die gleiche Entwicklungsumgebung, die auch von Microsoft Visual C/C++ verwendet wird.
Gemischtsprachige Programmierung ist möglich mit MS Visual Basic, MS Visual C/C++, und MASM.
Mit MS Visual C/C++ ist sie sogar innerhalb der Entwicklungsumgebung möglich.
Der Compiler und die Werkzeuge können wahlweise von der Kommandozeile aus oder
aus der Entwicklungsumgebung heraus gestartet werden. Die Win32 API wird unterstützt.
Zum Lieferumfang gehören die Programmbibliothek PortLib mit diversen Systemroutinen
für Datum-, Zeit-, Datei- und Verzeichnisabfragen, die QuickWin Library für
Windows-Programme mit einfachen Grafikanwendungen, sowie weitere umfangreiche wie Win32 GDI API,
OpenGL und SciGrafik-Bibliothek. Zum Lieferumfang gehören ferner
einige Hilfsroutinen wie der Library Manager, der Binäreditor, der Profiler und eine
Routine für Dateivergleiche. Man kann von NAG eine kompatible Version sowohl der
numerischen FORTRAN77- als auch der Fortran90-Bibliothek bekommen.
Neben dieser "Standard Version" des CVF gibt es eine "Professional" Version, die zusätzlich
die IMSL-Bibliotheken (Mathematik & Statistik) umfasst und den Array Visualizer, mit dem
sich Felder grafisch darstellen lassen. Die IMSL-Bibliotheken für den CVF kann man auch separat
von VNI beziehen.
Ein Kuckucksei im Compaq-Nest
Compaq ist einer von nur zwei Herstellern im Test, die eine umfangreiche Sprachbeschreibung
in gedruckter Form liefern. Online ist nicht nur dieses Language Reference
Handbuch, sondern auch ein Programmer's Guide verfügbar.
Der überraschte Kunde findet beim Auspacken des Kartons nicht nur Dokumentation und die
Compiler-CD, sondern zusätzlich eine Testversion des Fortran-Compilers von Intel.
Die Compaq-Software wird vom Administrator installiert. Anschließend muss jeder einzelne
Benutzer vor Gebrauch der Software ein zusätzliches "Per User Setup" durchführen.
Die Entwicklungsumgebung "Developer Studio" arbeitet grundsätzlich nur mit Projekten; d.h. man
muss zuerst ein Projekt einrichten, ehe man ein neues Quellprogramm bearbeiten kann.
In einem Fall ergab sich beim Laden eines Testprogrammes (capacita.f90) ein
Stack Overflow. Wir haben keine Möglichkeit gefunden, unter Kontrolle des Developer Studio
eine ausreichende Stack-Größe anzugeben. Wir mussten vielmehr die Entwicklungsumgebung
verlassen, um mit der Hilfsroutine EDITBIN mit der Option /STACK das Problem so beheben:
EDITBIN /STACK:64000000 CAPACITA.EXE. Ansonsten kann man Compiler-Optionen sehr bequem
einstellen und - was nicht immer selbstverständlich ist - man kann jederzeit mitlesen,
welche Optionen per Klick scharf gemacht worden sind.
Wenn man den Compiler im Komandomodus verwenden will, dann macht man das DOS-Fenster
am besten über den dafür vorgesehenen Startmenüeintrag der Compaq-Software auf.
So werden gleich die richtigen Umgebungsvariablen gesetzt. Bei der Gelegenheit kann man auch einem alten
Bekannten begegnen. Den Compiler muss man nämlich mit dem Kommando df ... aufrufen, das
steht offensichtlich für "Digital Fortran" - ein Name aus der Vor-Compaq-Zeit des Compilers.
Kennern von Microsoft Visual Studio wird das Developer Studio bekannt vorkommen. An dieser
grafischen Benutzerschnittstelle scheiden sich häufig die Geister. Die einen sagen, sie sei
ganz einfach und ganz intuitiv nutzbar, die anderen sagen, es sei praktisch unmöglich, als
Gelegenheitsprogrammierer mal eben ein kleines Programm durchzuschleusen. Vermutlich haben beide
Recht. Jedenfalls ist es sicher die professionellste aller in unserem Test verwendeten
Entwicklungsumgebungen mit grafischer Benutzerschnittstelle.
Wir haben sowohl die zum Lieferumfang gehörende Version der IMSL-Bibliotheken als auch die
von VNI zur Verfügung gestellt Version getestet. Beide ließen sich ansprechen und korrekt
verifizieren. Es empfiehlt sich, die Bibliothek im Rahmen der professionellen Version des CVF
gleich mitzubeschaffen, weil sie dann bei Bedarf per Klick im Developer Studio selektiert
werden kann. Diese Möglichkeit entfällt andernfalls. Und auch sonst ist die von VNI
gelieferte Version etwas hakelig. Sie wird an anderer Stelle als die "native" Version installiert.
Auch die Installationsanweisungen sind etwas verstreut. Erst ganz zuletzt
kommt man vielleicht auf die Idee, auch mal in der Beilage in der Hülle der CD nachzusehen.
Von den NAG-Bibliotheken gibt es gleich drei Varianten: die FORTRAN77-Bibliothek in
dll-Form und in lib-Form und die Fortran90-Bibliothek. Alle drei Bibliotheken ließen sich
im Kommandomodus ansprechen und korrekt verifizieren. Allerdings haben wir keine Möglichkeit
gefunden, im Developer Studio Programmbibliotheken für die Bindephase anzugeben.
Intel Fortran
Der Fortran-Compiler von Intel akzeptiert das volle Fortran 95. Es handelt sich um einen
hochoptimierenden/vektorisierenden/OpenMP-parallelisierenden Compiler,
der nicht nur die IA32-Umgebungen, sondern auch 64-Bit-Umgebungen
für Itanium-Prozessoren unterstützt. Obwohl der Compiler auf Intel-Plattformen
deren spezielle Eigenschaften, wie beispielsweise Streaming SIMD Extensions 2
(SSE2) für Pentium 4 oder Software-Pipelining für Itanium,
ausnutzt, hat er auch schon auf AMD-Atlon-Plattformen seine Brauchbarkeit erwiesen.
Die Intel-Compiler unterstützen Multithreading durch
Autoparallelisierung (mit Vorschau-Option, nur IA32) und OpenMP.
Wie bereits weiter oben erwähnt, wird dieser Compiler vermutlich schon bald als ein
wesentlicher Baustein des zukünftigen Fortran-Entwicklungssystems im Compaq/HP/Intel-Umfeld
sein. Die Quelltextkompatibilität mit Compaq CVF (unter IA32) ist offentsichtlich.
Anwender beobachten gelegentlich ungewöhnlich lange Compilationszeiten.
Die Implementierung von Fortran-Modulen unterscheidet sich von der
(nichtstandardisierten aber) üblichen Vorgehensweise anderer Compiler.
Intel Fortran liefert auch auf AMD-Prozessoren effizienten Code.
Win32/64-Varianten
Der Compiler wird als Plugin zu MS Visual Studio 6.0 geliefert. D.h., sie benötigen
zusätzlich den MS Visual C++, um dessen IDE, das ist das Visual Studio, als
gemeinsame Entwicklungsumgebung mitzubenutzen. Daraus ergibt sich natürlich automatisch die
Möglichkeit zur gemischtsprachige Programmierung mit MS Visual C/C++. Aus dieser IDE
heraus kann man auch 64-Bit-Anwendungen für Itanium-Prozessoren erzeugen.
Unzertrennlich
Wenn man es zuvor überlesen hat, was ganz klein geschrieben auf der Hülle der
CD unter "System requirements" steht, dann erfährt man erst während der
Installation, dass man auch MS Visual Studio 6.0 installieren sollte.
Es wird aber der Eindruck erweckt, wie wenn es erst mal auch ohne ginge.
Installiert man also zunächst versuchsweise ohne Visual Studio weiter, dann scheint die
Installation vollständig abgeschlossen zu werden. Der Versuch, ein Testprogramm zu übersetzen
und zu binden wird dann aber mit der Meldung ifl: error: could not find 'link' beantwortet.
Bei der Suche nach dem Linker findet man dann auch xlink.exe als Software-Komponente zum
Intel-Compiler. Leider ruft dieses xlink.exe selbst den Linker auf, der nicht zu finden ist.
D.h. Intel-Fortran funktioniert nicht ohne Visual Studio.
Also zuerst wird das Visual Studio installiert. Bei der Installation kann man wie üblich zwischen
mehreren Installationsvarianten wählen. Unsere erste Wahl schien nicht die richtige gewesen zu sein,
denn am Ende der Installation wurden diverse Dateien nicht gefunden. Der Installationsprozess wurde
unvollständig beendet. Beim zweiten Installationsversuch haben wir als zu installierende
Produkte wohlweislich nur VC++ selektiert. Bei diesem Versuch wurden wieder diverse (andere) Dateien
nicht gefunden, schließlich gab es einen error code 3 und die Installation wurde
mit der Meldung "Installation von MS Visual Studio nicht vollständig" beendet.
Das Start-Menü war vollständig und sah ganz brauchbar aus.
Anschließend verlief die Installation von Intel Fortran ganz reibungslos. Aber obwohl wir ein
Unterverzeichnis des Compilers, das fehlerhafterweise ins Unterverzeichnis Program Files
kopiert wurde, nach Programme kopiert hatten, ließ sich der Compiler als neue
Komponente im Visual Studio nicht blicken. Darum haben wir die Tests von der Kommandozeile aus
durchgeführt, hier gab es nach Installation des Visual Studio keine Probleme mehr.
Weil nach dem Herunter- und anschließendem Herauffahren des Rechners immer wieder eine DLL
(mspdb60.dll) vermisst wurde, was nur mit Neuinstallation des Compilers behoben werden konnte,
haben wir die Installation noch einmal komplett durchgeführt. Also Software deinstallieren,
Visual Studio installieren (diesmal traten keine Fehler auf, weil wir als zu installierende Komponenten
VC++, Data Access und Tools
gewählt hatten), Compiler installieren, fehlende Dateien
umkopieren. Das Ergebnis war wie zuvor: der Compiler ließ sich im Kommandomodus einsetzen,
ins Visual Studio war er immer noch nicht integriert und nach dem Restart des Rechners fehlte wieder die
genannte DLL.
Und sonst: Es gibt keinerlei gedruckte Dokumentation zum Intel-Compiler. Alles befindet sich auf der CD.
Die Dokumentation unter Windows unterscheidet sich im Detail etwas von der
unter Linux. Das ist uns z.B. im User's Guide aufgefallen. Außerdem gibt es
keine Handbücher im pdf-Format, die man komplett abdrucken könnte. Aber die ansonsten
komfortablen online-Handbücher kann man notfalls wenigstens kapitelweise abdrucken.
Lin32-Variante
Für Linux-Plattformen ist leider keine IDE verfügbar.
Dafür kann man für nichtkommerzielle/private Anwendungen eine kostenlose Lizenz
des Fortran-Compilers von Intel via Internet bekommen [6].
Optional sind die IMSL-Bibliotheken erhältlich.
Aber nun
Wie unter Windows gibt es keine gedruckte Dokumentation zum Intel-Compiler. Alles befindet sich
auf der CD; hier allerdings in HTML- und in pdf-Form. Für den Einsatz muss man sowohl
JavaSkript als auch Java scharf machen. Die Dokumentation zum Compiler findet man via HTML-Seite
.../docs/fcomindex.htm und die Dokumentation zum Linux Application Debugger via
.../docs/ldb.htm.
Die Software ist zwar nur für Red Hat Linux 7.1 und 7.2 validiert, es gibt aber (fast) keine
Probleme mit Suse 8.0. Installationshinweise findet man in den Release Notes. Die an der Stelle
opt/intel/compiler60/ia32/bin/ifc.cfg versprochene Standard-Konfiguration findet man dort
nicht. Es geht aber auch ohne.
Wir haben mal versuchsweise die NAG-FORTRAN77-Bibliothek (für g77 unter Red Hat 7.1)
installiert. Die Bibliothek ließ sich ansprechen und korrekt verifizieren.
Lahey LF95
Seit 1998 vertreibt Lahey nicht mehr seinen eigenen Compiler, sondern einen hochoptimierenden
Compiler von Fujutsu. Der Compiler akzeptiert das volle Fortran 95 sowie übliche
VAX-Spracherweiterungen. Der Compiler ist weitgehend kompatibel zum alten LF90-Compiler.
Win32-Variante
Der Compiler kann entweder von der Kommandozeile ("LF95 Command Prompt") oder aus der
Entwicklungsumgebung ED4W
heraus gestartet werden. Andere Werkzeuge wie ein Debugger und Make können ebenfalls aus
ED4W heraus gestartet werden. Mitgeliefert werden der MS Incremental Linker,
MS-C-Laufzeitbibliotheken, der MS Library Manager und MS Make.
Zum Lieferumfang gehört auch das Winteracter Starter Kit. Das ist eine Untermenge des
Winteracter, einem Werkzeug zur interaktiven Gestaltung von Bedienoberflächen im
Windows-Stil. Zusätzlich gibt es einige Funktionen, mit deren Hilfe sich Diagramme und
Grafiken erstellen lassen. Gemischtsprachige Programmierung mit Borland C++, Delphi,
Visual C, Fujitsu C und LF90 ist möglich. Darüberhinaus gibt es Laufzeitkompatibilität
mit g77 und egcs. Win32 API wird unterstützt. Man kann von NAG eine kompatible Version sowohl der
numerischen FORTRAN77- als auch der Fortran90-Bibliothek bekommen.
Neben der "Standard"-Version gibt es die Version LF95 Pro. Sie enthält zusätzlich folgende
weitere Werkzeuge: den "Fujitsu Visual Analyser" als Fortran Modul Browser, den Fujitsu C-Compiler,
die "Fujitsu Scientific Subroutine Library SSL2" mit etwa 250 Funktionen als Bibliothek für
viele mathematische Anwendungen und sie enthät "f90SQL Lite" als Utility für die
Anbindung relationaler Datenbanken mittels SQL und ODBC.
Was zum Anfassen
Der Lahey-Compiler fällt zunächst einmal dadurch positiv auf, dass man ein Paket mit
gedruckten Handbüchern bekommt. Das erleichtert den ersten Umgang mit dem Produkt sehr.
Zusätzlich sind die Handbücher aber auch online in pdf-Form auf der CD verfügbar.
Nach Installation unter Administrator zeigte die Entwicklungsumgebung "Lahey ED Developer (ED4W)"
dem "normalen" Benutzer zunächst diverse Fehlermeldungen beim Aufschalten an, beispielsweise
Personal configuration file not found, sie funktionierte aber trotzdem einwandfrei. Weder
während der Installation noch bei der Arbeit mit der Entwicklungsumgebung haben wir
Möglichkeiten gefunden, Optionen für den ED4W einzustellen. Verwendete Compiler-Optionen
werden nach dem Compilieren, das man hier mit dem Knopf "Build" anstößt, angezeigt.
Voreinstellungen können im "Driver Konfiguration File (LF95.FIG)" vorgegeben werden.
Der Gebrauch der grafischen Benutzerschnittstelle des ED4W ist auch für den
Gelegenheitsprogrammierer, der nur mal schnell ein Programm syntaktisch überprüfen
lassen und übersetzen lassen will, kein Problem. Bloß bei der
Programmausführung hapert es dann. Es sieht so aus, wie wenn der ED4W nur ein aufgebohrter Editor
ist. Zur Programmausführung mussten wir den ED4W verlassen und das bereits gebundene Programm
von der Kommandoebene aus starten.
Als numerische Bibliothek haben wir die Fortran90-Bibliothek von NAG installiert.
Die Bibliothek ließ sich problemlos ansprechen und korrekt verifizieren.
Lin32-Variante
Compiler und Tools können nur via Kommandozeile gestartet werden. Ein eigener Editor
fehlt. Auch der Debugger entspricht nicht dem der Windows-Version von LF95.
Es gibt Laufzeitkompatibilität mit Fujitsu C, g77 und egcs.
Man kann von NAG eine kompatible Version sowohl der
numerischen FORTRAN77- als auch der Fortran90-Bibliothek bekommen.
Neben der Standard-"Express"-Version gibt es die Version LF95 Pro. Sie bietet zusätzlich
automatische Parallellisierung, OpenMP-Kompatibilität, das Winteracter Starter Kit für die
Erstellung von Windows-GUIs und Bildschirmgrafiken, thread-safe BLAS und LAPACK,
Fujitsu Scientific Subroutine Library SSL2 und Polyhedron's Automake.
Bindestriche
Auch für die Linux-Version des Compilers bekommt man umfangreiche Dokumentation in elektronischer
und in gedruckter Form mitgeliefert. Die Installation verläuft völlig problemlos.
Beim Aufruf des Compilers kann man wie üblich viele Optionen angeben. Hier werden allerdings die
meisten Optionen mit "--" eingeleitet. Nur die allgemein üblichen Optionen -I -C -o -O -L
-l usw. werden mit einem einzigen "-" eingeleitet.
Als numerische Bibliothek haben wir die Fortran90-Bibliothek fl90 (Rel.4) von NAG installiert. Die
Bibliothek ließ sich erst dann problemlos ansprechen und korrekt verifizieren, nachdem wir im
Verifikationsskript im Compiler-Aufruf die Option --staticlink hinzugefügt hatten.
NAG f95
Nur Lin32/64-Varianten
Der f95-Compiler wurde aus dem f90-Compiler entwickelt, der der erste weltweit
verfügbare Fortran90-Compiler war. Der f95 ist für diverse UNIX-Plattformen
verfügbar, so auch für Linux-Systeme. Er akzeptiert das volle Fortran 95
und einige Spracherweiterungen. f95 ist ein optimierender - wenn auch kein
hochoptimierender - Compiler.
HPF-Code wird zwar compiliert und geprüft, aber es wird nur
Ein-Prozessor-Code erzeugt. Der Compiler unterstützt bereits einige der neuen
Sprachmittel von Fortran 2000, beispielsweise die allokierbaren Tpkomponenten und die
IEEE-Ausnahmebehandlung. Man kann ebenfalls von NAG eine kompatible Version sowohl der
numerischen FORTRAN77- als auch der Fortran90-Bibliothek bekommen.
Alt und erfahren
Die Installation verlief reibungslos. Wenn man mehr als nur die Demo-Version des Compilers
installiert, muss man sich zusätzlich um die Lizenz-Software, das ist FLEXlm, kümmern.
Das kann schon sehr lästig werden, wenn man die Software nicht kennt.
Als numerische Bibliotheken haben wir die FORTRAN77-Bibliothek und die
Fortran90-Bibliothek fl90 von NAG installiert.
Die Bibliotheken ließen sich problemlos ansprechen und korrekt verifizieren.
NASoftware FortranPlus
Der Compiler akzeptiert das volle Fortran 95. Darüberhinaus akzeptiert der
hochoptimierende Compiler bereits einige
Sprachmittel aus Fortran 2000, beispielsweise allokierbare Typkomponenten,
allokierbare Formalparameter, IEEE-Arithmetik und -Ausnahmebehandlung,
Interoperabilität mit C.
Zum Lieferumfang gehören diverse Programmbibliotheken in vorübersetzter Form
oder als Fortran-Modul wie Mathlib (mathematische Bibliothek), LAPACK, BLAS,
VPA20 (Rechnen in variabler Genauigkeit), F90GL 3-D
(OpenGL), Plot95 (technische Grafik) sowie ExtInt (IBM- und VAX-Intrinsics).
Für unsere Tests hatten wir leider keinen NAS-Compiler zur Verfügung.
Win32-Variante
Die aktuelle Version 2.5 wird mit dem ersten Release einer eigenen grafischen Entwicklungsumgebung
ausgeliefert. Der Compiler kann wahlweise auch von der Kommandozeile aus aufgerufen werden.
Lin32-Variante
Compiler und Tools können nur von der Kommandzeile aus gestartet werden.
Salford FTN95
Nur Win32-Variante
Der Compiler akzeptiert das volle Fortran 95. Der hochoptimierende Compiler und
die Werkzeuge können wahlweise von der Kommandozeile oder aus der Entwicklungsumgebung
Plato heraus ausgeführt werden. In Plato sind ein Editor, der Linker, Make und ein Debugger
integriert.
Zum Lieferumfang gehört ClearWin+. Das ist ein Werkzeug, das dem Programmierer sehr
einfach mithilfe von Deskriptoren (ähnlich wie Formatelemente einer FORMAT-Anweisung) den
Aufbau von Windows-Bedienoberflächen gestattet. Außerdem wird eine umfangreiche
Bibliothek mit mehr als 250 Routinen für Datum- und Zeitanfragen, Bit-Manipulation,
String-Manipulation, Speicherverwaltung, Grafik, Dateiverwaltung, usw. geliefert.
Und es gibt vordefinierte Fortran-Module mit Schnittstellenblöcken für die
Unterstützung von OpenGL, HTML-Einbettung und Win32API.
Gemischtsprachige Programmierung mit allen anderen Salford-Compilern ist möglich.
Zum Lieferumfang gehört beispielsweise auch eine kostenlose Lizenz für
den Salford C/C++Compiler.
Die Unvollendete
Abgesehen von einer Broschüre Getting Started with FTN95 gibt es keine
gedruckte Dokumentation. Auf der CD fehlt zudem ein wesentlicher Teil der online-Dokumentation,
nämlich der FTN95 - Users Guide und das FTN95 - Users Guide
Supplement. Alle andere versprochene Dokumentation ist vorhanden. Die fehlende Dokumentation
findet man aber bei Salford auf dem Server www.salford.co.uk.
Die online-Handbücher mögen im Ernstfall
zwar die Information enthalten, die man sucht, man findet sie nur nicht so leicht. Über den Index
findet man im Users Guide beispielsweise keinen direkten Einstieg zur Lösung des Problems
Stack Overflow.
Bei der Installation werden die notwendigen Umgebungsvariablen gesetzt, ohne vorher nachzufragen.
Das geht solange gut, wie man nur den einen Compiler installiert hat; bei mehreren gäbe es
sicher Probleme. Es ist der einzige Compiler unter Windows, für den im Start-Menü kein
separater Eintrag für den Start des Compilers von der Kommandoebene aus vorgesehen ist.
Trotzdem (oder deshalb) funktioniert der Aufruf des Compilers am normalen Kommando-Prompt.
Die Entwicklungsumgebung Plato ist ohne das Studium irgendwelcher Dokumentation sofort
benutzbar. Es gab nur ein Problem. Das Testprogramm capacita.f90 lief beim Binden via
Plato auf die Meldung "ACCESS VIOLATION". Ausserhalb von Plato machte das Programm keine
Probleme. In Plato sind nur sehr wenige Compiler-Optionen selektierbar. Für echte
Produktionsläufe, für die besondere Einstellungen erforderlich sind, wird man auf
die Kommandoebene übergehen müssen. Die Compiler-Option /LINK, die eigentlich eine Linker-Option ist und die man
laut Dokumentation ohne Angabe eines Dateinames spezifizieren kann, funktionierte nur
bei Angabe mit Dateiname.
Weil Salford vor vielen Jahren den Vorgänger FTN90 des FTN95-Compilers in Kooperation mit NAG entwickelt und
vertrieben hat, haben wir mal versuchsweise die FORTRAN77- und die Fortran90-Bibliotheken von NAG
installiert, die für den FTN90-Compiler (von Salford/NAG) vorgesehen sind. Leider ließen
sich beide nicht zur Zusammenarbeit mit dem FTN95-Compiler bewegen.
Die Leistungsgesellschaft
Die Leistungsmessungen wurden auf einem 2.0 GHz
Intel Pentium 4 mit 256 MB RDRAM durchgeführt.
Wir haben den Polyhedron-Benchmark [8] gemessen, der Fortran-Programme mit echten
Fortran90-Eigenschaften enthält. Und wir haben den Polyhedron-Benchmark [9]
gerechnet, der nur FORTRAN77-Programme enthält.
Jedes Benchmark-Programm wurde fünfmal gerechnet. Die
Laufzeiten wurden arithmetisch gemittelt.
Für die Messungen wurden die Compiler und die Programme außerhalb
der jeweiligen Entwicklungsumgebung von der Kommandozeile aus gestartet.
Wir konnten nämlich in keinem Fall feststellen, dass man beim Arbeiten aus der
Entwicklungsumgebung heraus Laufzeiteffizienz verschenkt oder gewinnt.
Aber die Compiler-Optionen lassen sich,
wenn man sie kennt, bequemer und sicherer in der Kommandozeile als via GUI in der
Entwicklungsumgebung angeben.
Der Polyhedron-Fortran90-Benchmark [8]:
- CAPACITA
- Berechnung der elektrischen Ladungsverteilung auf einem flachen Leiter.
Der Test verwendet u.a. Module, Felder mit übernommener Gestalt, dynamische Felder
und Zeiger.
- CHANNEL
- Implementierung eines Flachwasser-Modells für einen Kanal. Der Test verwendet
u.a. interne Funktionen und rechnet in doppelter Genauigkeit.
- FATIGUE
- Berechnung des Materialversagens von dünnen Metalldrähten
durch andauerndes Biegen. Die Differentialgleichungen werden mit einem
Zeitschrittverfahren gelöst. Der Test verwendet u.a. Module und dynamische Felder
und rechnet reell mit mindestens
15 Stellen dezimale Genauigkeit.
- GAS_DYNAMICS
- Modellierung der Strömungsmechanik eines Gases, das aus einer
Verbrennungskammer austritt. Es werden nicht-lineare partielle Differentialgleichungen
mithilfe eines finiten Differenzenschemas berechnet. Der Test verwendet u.a. dynamische Felder
Feldarithmetik, Rekursion, Module, optionale Parameter, automatische Felder
und diverse Standard-Unterprogramme.
- INDUCTANCE
- Diskretisierung eines dünnen Metallkastens durch rechteckige Netzelemente.
Berechnung diverser Induktivitäten entweder analytisch oder numerisch
mithilfe Gausscher Quadraturen.
Der Test verwendet u.a. Module, benutzerdefinierte Datentypen und dynamische Felder
und rechnet reell mit mindestens
15 Stellen dezimale Genauigkeit.
- KEPLER
- Lösung von Bewegungsgleichungen eines um die Sonne rotierenden Planeten.
Eplizite symmetrische Mehrschrittmethode für die Integration. Der Test
rechnet reell mit mindestens 12 Stellen dezimale Genauigkeit.
- MONTE_CARLO
- Numerische Integration mithilfe eines einfachen Integrationsschemas.
Der Test verwendet u.a. dynamische Felder.
- PROTEIN
- Dieser Code berechnet die Zustandsdichte und die kanonische Verteilungsfunktion für ein
Modellpeptid, das an einer heterogenen polymerähnlichen
Oberfläche absorbiert ist.
Der Test verwendet u.a. dynamische Felder und ein rekursives Unterprogramm und rechnet reell
mit mindesten 12 Stellen dezimale Genauigkeit.
- RNFLOW
- Vergleich der theoretischen Ergebnisse mit den simulierten Ergebnissen
verschiedener Methoden zur Berechnung des Materialversagens infolge Dauerbelastung.
Der Test verwendet u.a. Module, dynamische Felder und einige leicht
modifizierte LAPACK-Routinen.
- SCATTERING
- Bildung eines dichten komplexwertigen linearen Systems für quantenmechanische
Berechnungen. Es werden Fourier-Transformationen und einige Integrale berechnet.
Der Test verwendet u.a. Module und dynamische Felder und rechnet reell
mit mindesten 13 Stellen dezimale Genauigkeit.
|
Zuerst Fortran90-Programme unter Windows XP
Die mit der Stoppuhr ermittelten Laufzeiten wurden arithmetisch
gemittelt und das Ergebnis auf nächste halbe Sekunden abgerundet.
| Compiler-Optionen: |
| Absoft ProFortran |
-nowdir -O2 -cpu:p7 -xINTEGER -noconsole |
| Compaq CVF |
/optimize:5 /math_library:fast /tune:pn4 /architecture:pn4 /debug:none |
| Salford FTN95 |
/optimise /p6 /link <quelle>.exe |
| Intel Fortran |
/O3 /G7 /QaxW /Qip |
| Lahey LF95 |
-tpp -nchk -ntrace -nsav
-nstchk -o1 -nprefetch |
| NAS FortranPlus |
leider wurde kein Compiler für diesen Test zur Verfügung gestellt |
Grüne Zellen
markieren das Intervall von 100% bis 110% bezogen
auf den besten Wert.
Rote Zellen
markieren Werte, die schlechter
als 150% relativ zum besten Wert sind.
| Sekunden |
Absoft |
Compaq |
Salford |
Intel |
Lahey |
NAS |
| CAPACITA |
279 |
173 |
188 |
185 |
238 |
|
| CHANNEL |
38 |
39 |
69 |
38 |
41 |
|
| FATIGUE |
44 |
32 |
77 |
57.5 |
62 |
|
| GAS_DYN |
27.5 |
23 |
29 |
14.5 |
53 |
|
| INDUCT |
1.5 |
1.5 |
3.5 |
9.5 |
1.5 |
|
| KEPLER |
7 |
12 |
9.5 |
7.5 |
6 |
|
| MONTE_CA |
2.5 |
1.5 |
2 |
2 |
2 |
|
| PROTEIN |
9.5 |
8 |
14 |
10 |
11.5 |
|
| RNFLOW |
2 *) |
18 |
10 |
9.5 |
10 |
|
| SCATTERI |
16.5 |
11.5 |
22.5 **) |
14.5 |
13 |
|
|
| Mittelwert |
47.3 |
31.9 |
42.4 |
34.8 |
43.8 |
|
*) vorzeitiger Programmabbruch
**) Stack overflow, darum slink scatteri.obj -stack:50000000
Dann FORTRAN77-Programme unter Windows XP
| Sekunden |
Absoft *) |
Compaq |
Salford |
Intel |
Lahey |
NAS |
| AC |
3.5 |
4 |
4.5 |
3.5 |
5 |
|
| ADI |
6 |
5 |
5 |
2.5 |
6 |
|
| AIR |
10.5 |
11 |
15 |
9.5 |
9.5 |
|
| CHESS |
10 |
9.5 |
9.5 |
9.5 |
11 |
|
| DODUC |
24.5 |
20.5 |
35.5 |
15.5 |
24 |
|
| LM8 |
6 |
4 |
6 |
4 |
4 |
|
| LP8 |
2.5 |
2 |
Abbruch **) |
1.5 |
2 |
|
| MDB |
3.5 |
2.5 |
5 |
3 |
2.5 |
|
| MOLENRGY |
35 |
41 |
41 |
21 |
20 |
|
| PI |
5 |
6.5 |
5.5 |
6.5 |
12 |
|
| PNPOLY |
3.5 |
6 |
3.5 |
3 |
3.5 |
|
| RO |
3 |
3 |
5 |
5 |
3.5 |
|
| SM4 |
3 |
1 |
3 |
2 |
2 |
|
| TFFT |
22 |
21 |
21 |
21 |
21 |
|
| WH4 |
15 |
3.5 |
Abbruch **) |
1.5 |
14 |
|
|
| Mittelwert |
10.20 |
9.37 |
12.27 |
7.27 |
9.33 |
|
*) mit f95, nicht mit dem f77-Compiler.
**) Meldung devide by zero.
Summa summarum
Für die betrachteten Fortran-Benchmark-Programme gibt es folgende
pauschalen Ergebnisse unter Windows XP:
- Sieger
- Fortran 90: Compaq CVF und Intel Fortran.
- FORTRAN 77: Intel Fortran.
- Verlierer:
- Fortran 90: keiner.
- FORTRAN 77: Salford FTN95.
- Mittelfeld: Diese Compiler haben
nicht nur Schwächen, sondern können sich bei einigen
ausgewählten Programmen durchaus mit zu den besten
Fortran-Compilern zählen. Salford FTN95 verzeichnet die meisten Programme
mit vergleichsweise schlechter Laufzeiteffizienz.
Dann Fortran90-Programme unter Linux
Die mit dem Kommando times a.out ermittelten (REAL-)Laufzeiten
wurden arithmetisch gemittelt und das Ergebnis auf die nächste zehntel Sekunde gerundet.
| Compiler-Optionen: |
| Absoft ProFortran |
-O2 -xINTEGER -cpu:p7 |
| Intel Fortran |
-O3 -tpp7 -xW -ip |
| Lahey LF95 |
--tpp --nchk --ntrace --nsav -O --warn --staticlink |
| NAG f95 |
-O4 -ieee=full -unsharedf95 |
| NAS FortranPlus |
leider wurde kein Compiler für diesen Test zur Verfügung gestellt |
Grüne Zellen
markieren das Intervall von 100% bis 110% bezogen
auf den besten Wert.
Rote Zellen
markieren Werte, die schlechter
als 150% relativ zum besten Wert sind.
| Sekunden |
Absoft |
Intel |
Lahey |
NAG |
NAS |
| CAPACITA |
274 |
182.1 |
231 |
293.2 |
|
| CHANNEL |
44.8 |
50.6 |
51.2 |
43 |
|
| FATIGUE |
46.5 |
57.2 |
46.7 |
75 |
|
| GAS_DYN |
27.5 |
15 |
23 |
30.6 |
|
| INDUCT |
1 |
9.3 |
2.5 |
2.6 |
|
| KEPLER |
6.4 |
12.6 |
7.3 |
12.1 |
|
| MONTE_CA |
2.1 |
1.2 |
2 |
1.7 |
|
| PROTEIN |
10.2 |
8.6 |
12.1 |
10.8 |
|
| RNFLOW |
12.6 |
9.2 |
9.9 |
9.5 |
|
| SCATTERI |
17.4 |
14 |
17 |
25.6 |
|
|
| Mittelwert |
44.25 |
35.98 |
40.27 |
50.41 |
|
Dann FORTRAN77-Programme unter Linux
| Sekunden |
Absoft |
Intel |
Lahey |
NAG |
NAS |
| AC |
3.5 |
3.8 |
6.4 |
5.6 |
|
| ADI |
6.1 |
2.7 |
6 |
6.5 |
|
| AIR |
11.4 |
11.2 |
Abbruch *) |
14.1 |
|
| CHESS |
11.3 |
10.2 |
11.6 |
10.8 |
|
| DODUC |
25.5 |
17.4 |
23.6 |
Abbruch **) |
|
| LM8 |
6 |
4.1 |
4 |
6 |
|
| LP8 |
2.9 |
2.3 |
2.5 |
Abbruch **) |
|
| MDB |
3.5 |
3.7 |
3.6 |
4 |
|
| MOLENRGY |
13.6 |
13.1 |
13.8 |
18 |
|
| PI |
5.2 |
7.5 |
16 |
5.8 |
|
| PNPOLY |
4 |
2.8 |
3.3 |
5.5 |
|
| RO |
3 |
5.4 |
3.8 |
3.6 |
|
| SM4 |
3 |
1.6 |
1.9 |
6.3 |
|
| TFFT |
22.7 |
20.7 |
21.4 |
20.6 |
|
| WH4 |
15.3 |
1 |
13.9 |
6.3 |
|
|
| Mittelwert |
9.13 |
7.17 |
9.41 |
8.7 |
|
*) programmierter vorzeitiger Abbruch.
**) Meldung arithmetic exception.
Summa summarum
Für die betrachteten Fortran-Benchmark-Programme gibt es folgende
pauschalen Ergebnisse unter Linux:
- Sieger: Intel Fortran.
- Verlierer: keiner.
- Mittelfeld: Diese Compiler haben
nicht nur Schwächen, sondern können sich bei einigen
ausgewählten Programmen durchaus mit zu den besten
Fortran-Compilern zählen.
Der NAG-f95-Compiler weist die größte Anzahl relativ
laufzeitineffizienter Programme auf.
Was sagt uns das
Diese Zahlen sagen gar nichts darüber aus, wie laufzeiteffizient Ihr eigenes
Programm mit einem dieser Compiler auf Ihrem Rechner tatsächlich
sein würde. Dennoch
sind sie nicht wertlos, weil ein Compiler, der sich in unseren Tests als beständig
effizient erwiesen hat, zumindest hoffen läßt, dass das für Ihr Programm
auch so sein könnte.
Über den Zaun geblickt
Ein anderer Test von Fortran-Compilern unter Linux [12] am Rechenzentrum der
Universität Karlsruhe, bei dem 6 Programme für Lineare Algebra sowie die
Pakete LINSOL (iterative Lösung linearer Gleichungssysteme, dünn besetzte
Matritzen, indirekte Adressierung), SPARC (Fachgebiet Strömungsmaschinen)
und PLESOCC (Hydromechanik) getestet wurden, hat folgende Ergebnisse geliefert für den
NAG f95, Intel Fortran und Lahey LF95:
- Lineare Algebra: alle drei Compiler annähernd gleich laufzeiteffizient.
- LINSOL: sehr gute eindeutige Ergebnisse für Intel Fortran; mit Abstand die anderen.
- SPARC: Intel Fortran und Lahey LF95 etwa 10% effizienter als NAG f95.
- PLESOCC: Intel Fortran vorne, Lahey LF95 30% langsamer, NAG f95 vorzeitiger Programmabsturz.
Bei einem weiteren Test, bei dem es um die Diagnosefähigkeiten der Compiler ging,
ergab sich mit dem Polyhedron-Diagnose-Benchmark [14] ganz grob folgendes Ranking
zunächst unter Windows [15]:
| Salford |
Lahey |
Intel Compaq |
NAS |
Absoft |
Salford FTN95 dicht vor Lahey LF95, beide mit weitem Abstand vor Intel Fortran und Compaq CVF,
weit abgeschlagen Absoft ProFortran.
Und unter Linux ergab sich folgendes Ranking [16]:
| Lahey |
Intel NAG |
NAS |
Absoft |
Lahey LF95 mit weitem Abstand vor Intel Fortran und NAG f95,
weit abgeschlagen Absoft ProFortran.
Freie Fortran-Compiler
"frei" heißt fast immer frei für nichtkommerzielle persönliche Nutzung
und/oder frei für Tests vor dem Erwerb.
Wenn Sie nur mal für kurze Tests einen Fortran-Compiler benötigen,
dann sehen Sie sich ruhig im Web bei den Herstellern um. Irgendwo werden Sie immer einen
kostenlosen Compiler finden - allerdings meist mit zeitlich begrenzter Lizenz.
Wenn Sie nicht Fortran90/95, sondern immer noch FORTRAN 77 programmieren, dann
gibt es für Win32-Plattformen kostenlos
nichts besseres als die "Salford FTN77 Personal Edition" [10].
Der Compiler kommt sogar mit einer grafischen Entwicklungsumgebung und die
Lizenz ist zeitlich unbegrenzt.
Und wenn Sie mit Fortran77/90/95 in Linux-Umgebungen arbeiten, dann prüfen Sie,
ob Sie sich nicht die kostenlose Version des "Intel Fortran Compilers" [6] beschaffen
können. Wenn Sie die Voraussetzungen erfüllen, kommt dieser Compiler auch
mit zeitlich unbegrenzter Lizenz.
Informationsquellen und Fundorte im Web
- ISO, Fortran 2000, Working Draft, J3/02-007R2, Mai 2002:
ftp://ftp.j3-fortran.org/j3/doc/standing/2002/007.pdf
- RRZN, Fortran95-Nachschlagewerk:
http://www.rrzn.uni-hannover.de/Dokumentation/Handbuecher/Fortran95.html
- Gehrke, Die Programmiersprache F, Springer, 1997, 374 Seiten:
http://unics.rrzn.uni-hannover.de/rrzn/gehrke/publikat.html#HBF
- Bezugsquelle: h.o.-COMPUTER (Köln): http://www.hocomputer.de
- Bezugsquelle: QT software (München): http://www.qtsoftware.de
- Intel-Compiler, kostenlos: http://developer.intel.com/software/products/compilers/f60l/noncom.htm
- F-Compiler, kostenlos: ftp://ftp.swcp.com/pub/walt/F/
- Fortran90-Benchmark-Programme: http://www.polyhedron.co.uk/compare/win32/f90bench.zip
- FORTRAN77-Benchmark-Programme: http://www.polyhedron.co.uk/compare/win32/f77bench.zip
- Salford FTN77 Personal Edition Compiler: http://www.salford.co.uk/compilers/ftn77pe/index.shtml
- Bezugsquelle: NAG (Deutschland), info@naggmbh.de
- Geers, Fortran Compiler unter Linux, Rechenzentrum Universität Karlsruhe:
http://www.uni-karlsruhe.de/Uni/RZ/Hardware/Linux-Cluster/Cluster_UKA/t020424/compiler.pdf
- The Linux Fortran Information Page,
http://www.nikhef.nl/~templon/fortran.html
- Fortran-Diagnose-Benchmark: http://www.polyhedron.co.uk/compare/win32/diagnose.zip
- Diagnose unter Windows: http://www.polyhedron.co.uk/compare/win32/diagnose.html
- Diagnose unter Linux: http://www.polyhedron.co.uk/compare/linux/diagnose.html
Handbücher
Für keinen der obigen Compiler gibt es eine deutsche
Sprachbeschreibung.
Wenn Sie ein preiswertes Fortran-Handbuch brauchen oder wenn Sie eine
vollständige Sprachbeschreibung von Standard-Fortran
brauchen, dann sollten Sie das deutschsprachige Fortran-Handbuch
des RRZN verwenden. Dabei ist das neue
Fortran-95-Nachschlagewerk genauso brauchbar wie das inzwischen vergriffene
Fortran-90-Nachschlagewerk.
Bezugsquellen für das Fortran-95-Nachschlagewerk:
- für Mitglieder der UH: Auskunft RRZN, Schloßwenderstr. 5
- für Mitglieder anderer Unis: dortiges Rechenzentrum
Wenn Sie modernes Fortran (d.h. Fortran 90 ohne FORTRAN 77) lernen
wollen oder wenn Sie neue Fortran-Programme methodisch programmieren
wollen, dann sollten Sie das Handbuch
Die Programmiersprache F
verwenden.
Bezugsquellen
Nachspann
Im Prinzip ist man mit allen untersuchten Compilern gut bedient.
Der Markt hat sich so bereinigt, dass man in jedem Fall ein professionelles Werzeug bekommt.
Die tatsächliche Entscheidung bei der Anschaffung wird eher diktiert
durch den Preis, durch die Fähigkeiten zur Unterstützung alter
oder fremder Dialekte, durch die Qualität und Vollständigkeit der Dokumentation,
ob gemischtsprachige Programmierung möglich ist
beispielsweise mit C, ob man eher großen Wert auf Laufzeiteffizienz legt, oder
ob man nur Programmentwicklung für andere Plattformen macht,
ob man Gelegenheitsprogrammierer ist oder nicht, ob man Support benötigt, usw.
Wer unbedingt eine Entwicklungsumgebung
(IDE) mit grafischer Benutzerschnittstelle (GUI) verwenden will, der muss sich einen
Fortran-Compiler für Windows besorgen. Aber Achtung: der Gelegenheitsprogrammierer
kann auch mit einer IDE seine Schwierigkeiten bekommen, weil nicht alle
Entwicklungsumgebungen unbedingt intuitiv zu verwenden sind,
und bestimmte Einstellungen und Möglichkeiten mehrstufig hinter Knöpfen
und Menüs versteckt sein können. Aber was intuitiv ist und was nicht, das ist eine
ganz persönliche Einschätzung des jeweiligen Anwenders und das kann man nur selber
ausprobieren.
Der Profi hat die Wahl zwischen Compilern unter Windows oder Linux. Er wird unter Windows
vielleicht die IDE einsetzen, aber wie unter Linux hat er auch die Möglichkeit,
von der Kommandozeile aus zu arbeiten und das Management der Programmbausteine bei der
Programmentwicklung mittels Make zu organisieren.
Wer nur nicht kommerziell programmiert, für den gibt es sogar kostenlose Compiler im Web.

18. Jan 2003
Wilhelm
Gehrke
gehrke@rrzn.uni-hannover.de