Aus Linux-Magazin 08/2007

Der freie Compiler Open64

Trotz der Komplexität der Materie schießen immer mehr freie Compiler aus dem Boden, hinter denen meist Firmen und Universitäten stecken. Der Open64-Compiler, der gerade in Version 4.0 erschienen ist, gehört zu einer Familie mit komplizierter Genealogie.

Inhalt

102 | GCC 4.2 Die neue Version des GNU-Compilers parallelisiert mit OpenMP.

106 | Emacs-Modes Syntax-Highlighting für Linux-Magazin-Manuskripte demonstriert Emacs Lisp.

110 | Perl-Snapshot Mike Schilli rettet den Planeten: Unnütze Stromverbraucher finden mit Perl.

Wer mit Linux in den klassischen Programmiersprachen C und C++ oder gar Fortran programmiert, hat wahrlich keinen Grund, sich zu beklagen: Neben kommerziellen Produkten wie dem Intel-Compiler (der für nicht-kommerzielle Projekte auch kostenlos verfügbar ist) und dem Sun-Pendant hat sich der gute alte GNU-Compiler in Tausenden von Softwareprojekten bewährt. Jetzt gibt es von ihm wieder einmal eine neue Version, die das Linux-Magazin ab Seite 102 einem Test unterzieht.

Doch selbst in der freien Softwarewelt bekommt der GNU-Veteran nun Konkurrenz von einem alten Bekannten, der sich verändert hat: Open64 deckt mit der eben erschienenen Version 4.0 die wichtigsten Prozessorarchitekturen ab [1]. Schon länger konnte er Programme für Itanium übersetzen, jetzt beherrscht er zusätzlich x86 und EM64T/AMD64. Neben C und C++ übersetzt Open64 auch Fortran-95-Code.

Elterngeneration

Der so genannte Research Compiler ist aus mehreren Projekten hervorgegangen. Ein Stammvater ist der Mipspro-Compiler der Firma Silicon Graphics (SGI), der ursprünglich Code für die R10000-Mips-CPU erzeugte. Andere Teile stammen aus dem Open Research Compiler (ORC, [2]) für Itanium, Produkt einer Zusammenarbeit zwischen Intel und der chinesischen Akademie der Wissenschaften. Auf der anderen Seite haben Firmen den Open64-Compiler wieder als Basis für eigene Produkte herangezogen, zum Beispiel für die Xscale-Architektur. Pathscale schrieb den Codegenerator für x86_64, der nun wieder in den Open64 eingeflossen ist.

Cousin GCC

Selbst zum GNU-Compiler pflegt Open64 familiäre Bindungen. Verwendete er bis dato das Frontend des GCC 2.95, haben die Entwickler in Version 4.0 das Frontend von GCC 4.0.2 integriert, das den C++-Support verbessern soll. Auf älteren Systemen kann Open64 auch noch das ältere Frontend verwenden, das zum GCC 3.3.1 kompatibel ist. Zum GCC 4.x ist Open64 Source- und ABI-kompatibel, es lassen sich also auch Objektdateien beider Compiler miteinander linken. Langfristig wollen die Entwickler ihrem Compiler noch mehr Kommandozeilenoptionen des GCC beibringen. Eine aktuelle Übersicht darüber gibt [3].

Der Compiler beherrscht die profilgesteuerte (Profile Guided Optimization, PGO) ebenso wie globale Optimierung (Inter-Procedure Optimization, IPO). Die Optimierungsstrategien sind auf den beiden neu unterstützen Architekturen aber noch wenig getestet, wie die Entwickler selbst einräumen.

Laut Dokumentation unterstützt Open64 außerdem den Parallelisierungsstandard OpenMP (siehe dazu auch den GCC-Artikel auf den folgenden Seiten), die dafür vorgesehene Option »-openmp« führte im Test aber nur zu der eigenartigen Fehlermeldung »invalid option ‘p’«.

Bei einem kurzen Performance-Test ergaben sich recht gemischte Ergebnisse. Beim Test der Übersetzungszeiten auf der neueste Fedora-Version 7 war Open64 in den meisten Fällen dem GCC 4.1.2 unterlegen. Bestenfalls konnte er mit diesem gleichziehen. Bei der Laufzeit lagen die beiden Compiler meist gleichauf, lediglich beim Testfall Tramp3d ergab sich eine beträchtliche Abweichung: Brauchte Open64 für fünf Iterationen (»-n 5«) 13 Sekunden, hatte der GCC sage und schreibe 4:53 Minuten daran zu knabbern – beide Male ohne weitere Optionen übersetzt.

Performance-Tests obligatorisch

Mit eingeschalteter Optimierung (»-O2 -funroll-loops -ffast-math«) konnte der GNU-Compiler den Konkurrenten mit einer Laufzeit von knapp 9 Sekunden sogar noch überholen. Die gleichen Optimierungsoptionen führten bei Open64 zu keiner messbaren Änderung. Diese Ergebnisse zeigen, wie komplex die Optimierungsverfahren bei modernen Compilern und Architekturen mittlerweile sind. Das Ergebnis hängt auch immer stark von der jeweiligen Anwendung ab. Tests mit verschiedenen Compilern und Optionen sind deshalb bei jedem Performance-kritischen Softwareprojekt dringend zu empfehlen.

Infos

[1] Open64: [http://www.open64.net]

[2] Open Research Compiler: [http://ipf-orc.sourceforge.net]

[3] Kompatibilität zu GCC-Optionen: [http://wiki.open64.net/index.php/OptionCompat]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben