Freier Fall
Heureka dĂĽrfte sicher so mancher Fortran-Programmierer rufen: Still und heimlich hat die Pacific-Sierra Research Corporation den ersten freien Fortran-90-Compiler ins Internet gestellt - und der tritt gleich gegen die Konkurrenz an.
- Wilhelm Gehrke
Pacific-Sierra Research (PSR) bietet seit kurzem für Linux-(Intel-) Plattformen zusätzlich zu ihrer »professionellen« und kostenpflichtigen Version des VAST/f90-Compiler-Systems eine »persönliche« freie an, eine Variante, mit der sich uneingeschränkt arbeiten läßt. Sie unterscheidet sich von der professionellen nur durch das Fehlen zusätzlicher Optimierungen und des vollen Supports. Die Tabelle VAST/f90-Details zeigt, was das im einzelnen bedeutet.
| VAST/f90-Details | ||
| Freie Version | Professionelle Version | |
|
Beschreibung |
Fortran 90 mit Einschränkungen | Fortran 90 mit Einschränkungen |
| Fortran-95-Sprachmittel nur FORALL-Anweisung | Fortran-95-Sprachmittel nur FORALL-Anweisung | |
| optimierte Feldsyntax | optimierte Feldsyntax | |
| Optimierung von Schleifen | ||
| Optimierung von AusdrĂĽcken | ||
| Unterprogramm-Inlining | ||
| gedruckte Dokumentation verfĂĽgbar | ||
| Anforderungen | g77 (ab Version 0.5.21) | g77 (ab Version 0.5.21) |
| Lizenz | fĂĽr nichtkommerzielle Projekte auĂźerhalb des Arbeitsplatzes | fĂĽr kommerzielle Projekte, keine Restriktionen |
| Laufzeitlizenz | Codeweitergabe verboten | Codeweitergabe zulässig |
| Lizenzdatei | nicht erforderlich | erforderlich |
| Distribution | via PSR-Website, per FTP, per Datenträger | via PSR-Website, per FTP |
| Unterstützung | keine, außer periodischem Update zur Lösung gesammelter Probleme | 6 Monate freier Support, Updates sofort nach Problemlösung |
| Kosten | keine | 250 US-$ pro Anwender |
VAST/f90 arbeitet mit GNU g77 zusammen, um ein »High-Speed Execution Environment«, so PSR, für Fortran-90-Programme bereitzustellen. Professionelle Anwender können sich die freie Version von der PSR-Website herunterladen und testen, ehe sie eine Lizenz für die professionelle Compilerversion erwerben.
Fortran: Fundorte im Web
- VAST/f90
- Pacific-Serra Research
- Quetzal-Benchmark (www.swcp.com/~quetzal/access.html)
- NAG
- PCG (www.goof.com/pcg/binaries-linux.html)
- gcc
- g77
- Windows 95/NT
- Linux
- Fortran 95
- Nichtimplementierte Sprachmittel
- Gehrke
Es gibt mindestens 17 Compiler fĂĽr Linux-Plattformen: 16 unterstĂĽtzen FORTRAN 77, sechs Fortran 90, drei HPF, einer F und einer Fortran 95.
Da in VAST/f90 eine ganze Reihe von Sprachmitteln nicht implementiert ist (siehe Fundorte im Web), könnte der Verdacht aufkommen, daß es sich bei so vielen Einschränkungen nicht um einen echten Fortran-90-Compiler handelt, sondern nur um ein Subset, ähnlich etwa dem bekannten Subset-Compiler für F oder ELF90. In der Praxis fällt das für Anwender aber kaum ins Gewicht. Und in der Tat bewies die Durchführung der Tests, daß nur eines der teilweise sehr umfangreichen Programme von den Einschränkungen betroffen war.
Nach den Regeln des Fortran-Standards handelt es sich beim VAST/f90 sicher nicht um einen »normgerechten« Fortran-90-Compiler. Die in der Übersicht »VAST/f90-Details« angesprochenen Fortran-95-Sprachmittel bestehen derzeit einzig aus der FORALL-Anweisung; weitere sind zwar vorbereitet, aber noch nicht in das aktuelle Release eingebaut.
Compiler mit eigenem Charakter
VAST/f90 besteht im wesentlichen aus einem Übersetzer, der Fortran-90-Quelltext akzeptiert, nach Fortran 77 wandelt und dann mit dem g77 übersetzt, der wiederum den C-Compiler gcc benötigt. g77 und gcc verwenden ein und dasselbe »Backend« für die Codeerzeugung. Anders als bei f2c [1] setzt der g77 aber nicht auf den gcc auf, erzeugt also keinen C-Code.
Die diversen beteiligten Übersetzer sind für den VAST/f90-Anwender normalerweise völlig transparent. Er »sieht« nur einen Treiber mit dem Namen f90, der die eigentliche Benutzerschnittstelle bereitstellt und das komplette Handling der Übersetzungsvorgänge bis hin zum Linken verwaltet.
Wer nur eine Übersetzung von Fortran 90 nach 77 durchführen will, kann dazu entweder die entsprechende Compileroption für f90 wählen oder unter Umgehung des f90-Treibers den Übersetzer vf90 direkt aufrufen.
Vor dem Installieren des VAST/f90 sollten GNU-FORTRAN 77 und -C auf dem Zielsystem bereits implementiert sein. Dabei empfiehlt es sich, keine ältere Version als v.0.5.21 des g77 zu verwenden, da sonst Schwierigkeiten bei der dynamischen Speicherverwaltung vorkommen und beim Linken »unsatisfied externals« auftreten können. Der gcc ist üblicherweise Teil der g77-Distribution.
Für die Tests auf einem Pentium-Rechner habe ich mir bequemlichkeitshalber von der Pentium Compiler Group (PCG) die für meinen PC benötigten gcc- und g77-Binaries besorgt. Dies sind:
- BASE, pgcc-1.0.2.linux86.tar.gz, (874,000 KByte) und
- G77, pg77-1.0.2.linux86.tar.gz, (923,147 KByte).
Das Einrichten ging in der Reihenfolge BASE, G77 und VAST/f90 (vf90_per.tar) reibungslos vonstatten. Dabei sind die knappen Angaben in der README-Datei von VAST/f90 völlig ausreichend.
Testplattform war derselbe Pentium 90 mit 32 MByte RAM, der auch schon als Basis fĂĽr die Begutachtung der Fortran-Compiler unter Windows NT diente, die in der iX im Mai erschien [2]. Dort sind auch die hier ebenfalls verwendeten Programme des Quetzal-Benchmarks beschrieben. Als Betriebssystem fungierte S.u.S.E. Linux 5.1 (Kernel 2.0.32). Die Ergebnisse basieren auf den voreingestellten Optionen. Weitere Experimente mit Optimierungen fanden nicht statt.
VAST im Wettbewerb
Beim Quetzal und anderen getesteten Programmen hat sich gezeigt, daß die freie Version des VAST-Compiler von Pacific-Sierra Research sowohl hinsichtlich der Compilationszeiten als auch der Exekutionszeiten fast so effizient ist wie der von NAG. Lediglich das Testprogramm pochhammer mit rekursiver Funktion lief wesentlich langsamer unter VAST/f90 als unter NAGWare/f95. Alle Fehlermeldungen entstammten der Fortran-90/95-Ebene. Die beteiligten Zwischensprachen (g77, gcc) hatten nichts zu bemängeln. Die Qualität der Debugger war nicht Gegenstand des Testes. Unix/Linux-Debugger für Fortran 90/95 sind bekanntlich wenig brauchbar.
Obwohl oder gerade weil die Linux-Compiler ohne grafische Entwicklungsumgebung geliefert werden, ging die Umstellung der Testprogramme und die DurchfĂĽhrung der Tests wesentlich schneller vonstatten als unter Windows NT. Die Bedienung auf Kommandoebene lief bis auf die Schwierigkeiten mit dem freien Quelltextformat (siehe Tabelle Testergebnisse) bei VAST/f90 wie gewohnt ab; unter Windows NT sieht das je nach Compiler ganz anders aus, wie der Bericht WinkelzĂĽge [3] im gleichen Heft zeigt.
| Testergebnisse | ||||
| VAST/f90 Version 3.4M7 | NAGWare/f95 Version 1.0 | |||
| Testprogramm | Ăśbersetzungszeit | AusfĂĽhrungszeit | Ăśbersetzungszeit | AusfĂĽhrungszeit |
| big_integers | 7 s1 | 12 s | 2 s | - |
| dynamics | 1 - 2 s | 14 s | 1 - 2 s | 12 s |
| gas_dynamics | s. FuĂźnote3 | - | s. FuĂźnote2 | - |
| gen_romans | 17 s | 22 s | 6 s | 19 s |
| kepler | 3 s | 80 s | 3 s | 65 s |
| lu | 55 s | 2 s | 60 s | 2 s |
| overlap | 22 s | 27 s | 20 s | 26 s |
| pochhammer4 | 2 s | 83 s | 2 s | 25 s |
| scatter | 60 s | s. FuĂźnote5 | 70 s | s. FuĂźnote5 |
| static | 1 - 2 s | 2 - 3 s | 1 - 2 s | 2 - 3 s |
| 1 MODULE-Probleme bei freiem Quelltextformat, nach Umwandlung in festes Quelltextformat o.k. | ||||
| 2 viele unsinnige Fehlermeldungen | ||||
| 3 Unterprogramme lieĂźen sich einzeln in festem Quelltextformat ĂĽbersetzen. Aber bei Angabe von f90 -Wv,-ya *.f90 wirkte die Option -ya nur fĂĽr die erste Quelltextdatei; bei allen weiteren schaltete der Compiler auf die Default- Einstellung zurĂĽck. | ||||
| 4 rekursive Funktion | ||||
| 5 Unsatisfied Externals beim Linken; wahrscheinlich mit dem neuesten g77 behoben. | ||||
Die Effizienz beim Übersetzen war bei VAST/f90 meistens deutlich besser als bei den getesteten NT-Compilern. Die unter Linux erzeugten Codes liefen bei mehreren Programmen sogar deutlich schneller als die optimierten NT-Codes [2]. Eine Ausnahme bildet nur das oben erwähnte Programm pochhammer.
Freiheit als Alternative
Zu den teuren Fortran-90/95-Compilern für Windows NT stellt das freie VAST/f90 für Linux-PCs eine echte Alternative dar. Hinsichtlich des unterstützten Sprachumfangs fällt es jedoch deutlich zurück. Denn VAST/f90 unterstützt weder das volle Fortran 90/95 - im Gegensatz zu NAGWare/f95 und denen für Windows 9x/NT -, noch andere herstellerübliche Spracherweiterungen, wie sie die meisten Übersetzer für Windows 9x/NT anbieten. Mit seiner Übersetzungs- und Ausführungsgeschwindigkeit kann das frei erhältliche VAST/f90 durchaus gegen die Konkurrenten antreten. Und wer das Arbeiten auf Kommandoebene gewohnt ist und keine grafische Entwicklungsumgebung braucht, empfindet das Arbeiten mit VAST/f90 ohne verwirrendes Armaturenbrett, Servo-Lenkung und elektronisches Automatikgetriebe als wohltuend direkt. Und für die Fortran-Gemeinde, die vermutlich weiterhin vergeblich auf ein GNU g90 wartet, ist die freie Version von VAST/f90 ganz sicher eine echte Alternative.
Wilhelm Gehrke
ist wissenschaftlicher Mitarbeiter am Regionalen Rechenzentrum des Landes Niedersachsen (RRZN) an der Universität Hannover. Er hat mehrere Fachbücher über FORTRAN 77, 90 und 95 sowie über die Programmiersprache F verfaßt.
Literatur
[1] Wilhelm Gehrke; Fortran; Transponiert; Ăśbersetzer von FORTRAN 77 nach C: f2c; iX 9/94, S. 102 ff.
[2] Wilhelm Gehrke; Programmiersprachen; Numerische Enklaven; 5 Fortran-Compiler fĂĽr Windows NT; iX 5/98, S. 79 ff.
[3] Ralph HĂĽlsenbusch; Fortran; WinkelzĂĽge; Sechs Fortran-Compiler fĂĽr Windows NT mit SPECfp95 untersucht; iX 8/98, S. 81 ff.
iX-WERTUNG
- [+] freier Fortran-90-Compiler fĂĽr Linux
- [+] effiziente Ăśbersetzung und schnelle Codes
- [-] fehlende Sprachmittel (siehe Fortran-Compiler fĂĽr Linux)
|
Fortran-Compiler fĂĽr Linux |
||
| Hersteller | Produkt | Plattform |
| Absoft | f90, f77 | i86 |
| Portland | f90, hpf, f77 | i86 |
| NAGWare | f90 + gcc, f95 + gcc | i86 |
| PSR | f90 + g77, hpf + g77 | i86 |
| Microway NDP | f90, f77 | i86, Alpha (nur f77) |
| NASoftware | f90, hpf | i86 |
| GNU | f2c + gcc, g77 | i86, RISC und andere |
| Imagine1 | F + gcc | i86 |
| Siemens Nixdorf | f77 | i86 |
(rh)