Fortran Compilervergleich

Stand: 9.12.2019

Die Vorgeschichte

In den 1990er Jahren hatten wir Fortran Compiler bereits ausführlich verglichen und dies in unseren jährlich erschienenen Katalogen veröffentlicht. Mit der großen Verbreitung und Verfügbarkeit des Internet wurde dies überflüssig, da Dr. John Appleyard von Polyhedron Software Ltd., England, diese Vergleiche ebenfalls anstellte und auf der Website seiner Firma publizierte. Dr. Appleyard gründete nach Auflösung von Polyhedron Software Ltd. seine eigene Firma Polyhedron Solutions Ltd. und führte dort die Vergleiche bis 2017 weiter (https://www.fortran.uk/fortran-compiler-comparisons/). Mitte des Jahres (2019) fragte er, ob wir die Vergleiche übernehmen wollen, und so kam es, daß nun wir, d.h. die QT software GmbH und die Polyhedron Software & Services Ltd., England (Nachfolger von Polyhedron Software Ltd.), die Fortran Compilervergleiche durchführen (und die Kosten teilen).

Hinweise vorab

Im Vordergrund des Vergleichs der Fortran Compilersysteme steht der Vergleich der Laufzeiten von meist rechenintensiven Fortran Programmen, die mit den verschiedenen Fortran Compilern erstellt wurden - die sog. Runtime-Benchmarks.
Wie in unserem Ratgeber "Fortran Compilersysteme" dargelegt, sei betont darauf hingewiesen, daß die Laufzeit-Performance nicht das einzige Kriterium für die Auswahl eines Fortran-Compilers ist. Was nützt einem die beste Performance, wenn die Bedienung des Compilers schwierig ist, die Rechenergebnisse mglw. nicht korrekt bzw. ausreichend präzise sind, die Compilier- und Linkzeiten lang sind, so daß man sich in seiner Arbeit behindert fühlt, die Fehlerdiagnostik schwach und dergleichen mehr.
Die Compilervergleiche von Dr. Appleyard sind wesentlich ausführlicher als die hier vorgestellten. Insbesondere auf die Diagnostic Capabilities und den jeweiligen Fortran Sprachumfang (Fortran 95, 2003, 2008 etc.) sei hingewiesen. Bzgl. letzterem sind auch die Tabellen von Ian Chivers & Jane Sleightholme aufschlußreich.
Wünschenswert (und eigentlich notwendig) wäre noch die Begutachtung der Rechenergebnisse bzw. der numerischen Genauigkeit der Fortran Compilersysteme. Insbesondere die Meldungen einiger Compiler aufgrund numerischer Probleme - siehe bspw. die Ergebnisse zu "capaci(ta)" und "channe(l2)" - schüren Zweifel an der Korrektheit der Testprogramme. Vielleicht finden wir eines Tages neben dem regulären Tagesgeschäft auch die Zeit zur gründlicheren Analyse. Wir bitten um Verständnis.

Testequipment und -bedingungen

Als Testumgebung wird ein handelsüblicher PC verwandt, der mit einer Intel® Core™ i7-9700F CPU @ 3.00GHz (8 Cores) und 16 GB RAM ausgestattet ist. Auf diesem sind sowohl Microsoft Windows 10 und Linux Mint 19.2 installiert.
Die getesteten Fortran Programme sind im Quellcode auf der Website der Fa. Polyhedron Solutions Ltd. (s.o.) zu finden. Nachfolgend unsere Ergebnisse der Runtime-Benchmarks. Verwendet wurden die 64-Bit Compilervarianten, mit Ausnahme des Lahey Fortran LF (früher LF95), der nur als 32-Bit Compiler existiert und aufgrund seiner weiten Verbreitung hier ebenfalls aufgeführt wird.
Compiliert wurde mit folgenden Compiler- und Linkeroptionen (fast alle Compilersysteme fungieren als "Driver", starten also zuerst den Compiler und rufen dann den Linker auf).

Anmerkungen
Durchweg wurden die Optimierer der Compilersysteme in der laut Dokumentation "höchsten Optimierungsstufe" zugeschaltet, sowie - sofern unterstützt - prozessorspezifische Optionen gesetzt, so daß der Binärcode für die vorhandene CPU optimiert wurde. Desweiteren, wenn nicht durch die Optimierungsstufe vorgegeben, wurde Loop-Unrolling verwendet.

AP steht für AutoParallel, d.h. das Compilersystem versucht zusätzlich den Code zu parallelisieren.

Die Benchmark-Programme wurden mehrfach, mindestens 10 mal hintereinander gestartet, und die jeweilige Laufzeit wurde gemessen. Wenn sich die Laufzeitmessungen stabilisierten (d.h. sich weniger als 1% Abweichung von der vorherigen Messung ergab), wurden der Benchmark für das betroffene Progamm abgeschlossen.

Laufzeiten in Sekunden.

Grün unterlegte Zellen: die Laufzeit liegt im Bereich von 10% der kürzesten Laufzeit.
Rot unterlegte Zellen: die Laufzeit beträgt mehr als 150% der kürzesten Laufzeit.

Die Namen der Benchmarkprogramme sind auf 6 Zeichen gekürzt.

Fortran Compilersystem Compiler- und Linkeroptionen, Windows
Windows - Runtime Benchmarks 64-Bit Fortran
Absoft
19.0
Absoft (AP)
19.0
FTN95
8.51
gfortran
8.1
Lahey GNU
6.4
Lahey LF
(32-Bit)

7.80
Intel
2019.5
Intel (AP)
2019.5
NAG
6.2
PGI
19.4
PGI (AP)
19.4
ac 4.02 4.05 8.32 4.85 4.84 7.45 3.41 3.42 5.45 6.49 6.47
aermod 7.40 7.52 14.99 11.84 11.32 10.51 5.83 6.17 11.83 7.06 7.41
air 1.77 0.87 6.48 1.95 2.14 2.74 1.30 0.73 2.34 1.53 4.34
capaci 11.72 11.63 27.17 12.72 11.96 18.29 9.87 10.10 13.06 9.64(4 14.94(4,5
channe 53.25 46.49 165.90 50.16(1 50.01 77.42 44.75 48.24 69.58(3 50.57(4,5 51.86(4,5
doduc 10.71 10.77 18.37 11.01(2 11.08 11.76 5.49 5.47 10.64 9.24(5 11.06(5
fatigu 37.56 40.08 188.39 55.81 57.13 114.56 31.27 31.26 87.56 94.32 121.13
gas_dy 29.57 28.86 62.65 62.52 60.70 56.71 22.55 23.41 41.40 42.35 65.78
induct 25.38 15.62 141.73 21.89 22.45 225.75 18.96 19.62 29.87 37.26 37.17
linpk 3.45 3.50 4.05 3.46 2.93 3.47 2.56 2.57 3.76 3.56 4.42
mdbx 5.40 4.56 9.47 4.34 4.42 6.50 3.43 2.13 5.00 4.84 21.25
mp_pro 176.00 55.53 499.20 150.05 150.84 67.26 31.48 5.75 90.96 33.44 33.51
nf 5.37 5.39 10.02 6.79 6.52 6.81 3.62 3.58 6.27 6.54 14.98
protei 13.19 13.05 26.93 12.61 12.89 24.78 13.41 13.69 14.62 14.63 14.44
rnflow 9.15 9.09 18.67 15.06 10.24 13.12 6.80 4.67 13.19 10.11 9.83
test_f 36.54 33.79 95.04 42.43 33.56 61.30 18.66 17.24 56.09 23.13 72.30
tfft2 25.76 24.51 50.32 22.29 20.35 28.25 23.33 24.02 26.34 23.92 24.17
Geometric Mean 13.65 11.63 32.55 15.46 14.69 21.02 9.37 7.88 16.47 13.40 19.13

Während mancher Programmläufe wurden Exceptions (bspw. Wertüberläufe, Wertunterschreitungen, etc.) gemeldet, die auf Rechenprobleme hinweisen.
Das Programm meldet während oder am Ende des Programmlaufs:
1) "The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG".
2) "The following floating-point exceptions are signalling: IEEE_INVALID_FLAG".
3) "Warning: Floating underflow occurred".
4) "Warning: ieee_underflow is signaling. FORTRAN STOP".
5) "Warning: ieee_inexact is signaling. FORTRAN STOP".

Fortran Compilersystem Compiler- und Linkeroptionen, Linux
Linux - Runtime Benchmarks 64-Bit Fortran
Absoft
19.0
Absoft(AP)
19.0
gfortran
7.40
Intel
2019.5
Intel(AP)
2019.5
NAG
6.2
PGI
19.4
PGI(AP)
19.4
ac 3.80 3.76 13.99 3.32 3.47 14.05 5.50 5.56
aermod 6.05 6.21 5.12 5.61 6.01 7.85(3 ---(6 ---(6
air 1.73 0.75 2.45 1.71 1.11 1.86 1.14 1.35
capaci 10.75 10.92 11.72(7 9.67 10.92 11.94(3 9.55(4,5 9.86(4,5
channe 53.13 46.27 49.32(7 45.79 48.06 69.21 50.70(4,5 50.05(4,5
doduc 8.98 8.99 7.87 5.45 5.38 10.03 7.77(4,5 9.33(4,5
fatigu 37.81 38.57 44.16 31.70 31.63 87.94 63.94 64.77
gas_dy 32.30 29.44 48.59 45.27 44.82 54.97 31.54 32.80
induct 19.93 12.67 24.13 18.87 19.76 63.66 30.59 30.58
linpk 3.56 3.58 2.82 2.40 2.47 2.90 2.50 4.35
mdbx 5.40 4.61 4.51 3.51 2.22 5.14 3.92 4.24
mp_pro 81.44 27.76 160.46 32.57 6.08 158.88 32.43 32.44
nf 5.57 5.50 4.13 3.57 3.67(8 5.70 4.74 4.80
protei 14.18 13.79 13.76 14.30 14.35 13.22 13.63 14.51
rnflow 9.27 9.19 18.35 7.09 5.02 18.82 16.37 11.57
test_f 36.02 27.20 47.16 12.37(8 17.10(8 49.86 23.07 22.48
tfft2 31.73 25.65 23.26 26.04 25.94 30.25 29.80 24.56
Geometric Mean 12.78 10.57 14.98 9.76 8.56 18.20 12.15 12.60

6) "AERMOD Finishes UN-successfully"
7) "The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL"
8) "forrtl: severe (174): SIGSEGV, segmentation fault occurred"

Hinweise zu Haftung & Urheberrecht bzgl. der Information auf dieser WebSeite.
Copyright QT software GmbH 2019/2020. Alle Rechte vorbehalten.
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
PGI is a product of the NVIDIA Corporation.

Fortran Compiler

für Linux

· Absoft ProFortran for Linux
· Intel Parallel Studio XE Composer Edition for Fortran, Linux
· Intel Parallel Studio XE Professional Edition for Fortran, Linux
· Intel Parallel Studio XE Cluster Edition for Fortran, Linux
für MacOSX
· Absoft ProFortran for MacOSX
· Intel Parallel Studio XE Composer Edition for Fortran, MacOSX
für Windows
· Absoft ProFortran for Windows
· Intel Parallel Studio XE Composer Edition for Fortran, Windows
· Intel Parallel Studio XE Professional Edition for Fortran, Windows
· Intel Parallel Studio XE Cluster Edition for Fortran, Windows
· Lahey Fortran Professional, Windows
· Lahey/GNU Fortran, Windows
· Silverfrost FTN95