Über ECOUSS

 

Mit der Einführung von Mehrkern Prozessoren stehen leistungsfähige Parallelrechner einer sehr breiten Masse von Anwendern zur Verfügung. Gleichzeitig wächst die Beliebtheit von Graphikkarten und GPGPUs zur Berechnung über viele „Rechenkerne“ hinweg. Somit bietet sich in Zukunft für jeden Anwender eine Umgebung, die der von Höchstleistungsrechnern prinzipiell ähnelt und somit ähnliche Anforderungen und Kenntnisse fordern, aber auch entsprechende Leistungsverbesserungen ermöglicht. Durch die erhöhte Heterogenität erweitert sich aber zugleich auch das Spektrum an System-Architekturen und den damit verbundenen Anforderungen an den Compiler (Übersetzer):

Insbesondere im Umfeld des Höchstleistungsrechnens ist es üblich, Programme gezielt für spezielle Architekturen zu entwickeln, um so eine maximale Performanz der Anwendung zu erzielen. Dadurch ergeben sich zwangsläufig gravierende Nachteile bei der Wartbarkeit und insbesondere Portierbarkeit. Der Übersetzer dient dabei als das unterste Bindungsglied zwischen dem (höheren) Quellcode und dem (maschinennahen) Endcode – allerdings ist er dabei nicht in der Lage, die benötigten Optimierungen und Adaptionen vorzunehmen, ohne dass entsprechende Angaben vorgegeben und spezifische Anpassungen vorgenommen wurden. Das heißt, derzeitige Übersetzer sind nicht in der Lage, Hardware-unabhängigen Code derart zu übersetzen, dass die spezifischen System-Charakteristika trotzdem optimal genutzt werden können.

Um dem breiten und sich schnell ändernden Spektrum an Parallelrechner-Architekturen gerecht zu werden, müsste ein grundlegend neuer Ansatz der Übersetzung erstellt werden, der einer breiten Masse von Anwendern eine effiziente Nutzung aktueller Hardware ermöglicht. Um die Verwendbarkeit und Nachhaltigkeit einer solchen Änderung zu garantieren, müßte ergo gewährleistet werden, dass die Wart- und Portierbarkeit drastisch erhöht wird, so dass Programme nicht länger für eine konkrete Plattform entwickelt oder angepasst werden müssten.

Es ist unrealistisch davon auszugehen, dass sich im Übersetzerbau in nächster Zeit ein derartiger Fortschritt erzielen lässt. Im Gegenteil: Seit Jahrzehnten gilt der sich an jede beliebige Plattform automatisch anpassende Übersetzer als der heilige Gral. Die Forschung dieser Jahre hat gezeigt, dass die Evolution der Übersetzer weitaus langsamer von statten geht als die der Hardware.

Wir verfolgen in diesem Vorhaben daher einen anderen Ansatz. Wir müssen davon ausgehen, dass auch weiterhin Programm-Anpassungen vom Entwickler vorgenommen werden müssen um die Zielarchitektur so effizient wie möglich zu nutzen. Jedoch lässt sich dieser Prozess von der Seite des Übersetzers derart unterstützen, dass spezifische Algorithmen- und Hardware-Muster, bzw. -Typen einfacher genutzt werden können. So kristallisieren sich in vielen Anwendungen oft verwendete parallele Muster heraus, die durch Spracherweiterungen besser genutzt werden können. Diese werden jedoch prinzipiell nicht von derzeitigen Übersetzer-Technologien unterstützt – stattdessen werden Source-to-Source Übersetzer-Strategien angewendet, um erweiterte Sprachkonstrukte zu unterstützen, die dementsprechend nicht mit dem Backend des Übersetzers abgestimmt sind, also typischerweise auch nicht optimal auf die Zielplattform übertragen werden können.

Des Weiteren kristallisieren sich Code-Transformationen heraus, die momentan manuell durchgeführt werden, da dem Übersetzer die nötigen Informationen über die Zielhardware fehlen. Hier streben wir an, den Experten zwar die Entscheidung über die Anwendung zu überlassen, ihn bei der Ausführung aber durch Übersetzertechnik zu unterstützen.

Also wollen wir Übersetzertechnik nutzen, um dem Programmierer und Experten die Arbeit bei der Optimierung einer Anwendung zur erleichtern, die Portabilität der Anwendung zu erhöhen und die Effizienz sicherzustellen.

 

Die Kommentarfunktion ist geschlossen.