Resource-aware Programming in a High-level Language - Improved performance with manageable effort on clustered MPSoCs
Creators: name: Zwinkau, Andreas
Publisher: name: Karlsruhe
Year: 2018
Subjects: Invasive Computing
Resource-Awareness

description: Bis 2001 bedeutete Moores und Dennards Gesetz eine Verdoppelung der Ausführungszeit alle 18 Monate durch verbesserte CPUs.
Heute ist Nebenläufigkeit das dominante Mittel zur Beschleunigung von Supercomputern bis zu mobilen Geräten.
Allerdings behindern neuere Phänomene wie "Dark Silicon" zunehmend eine weitere Beschleunigung durch Hardware.
Um weitere Beschleunigung zu erreichen muss sich auch die Soft­ware mehr ihrer Hardware Resourcen gewahr werden.
Verbunden mit diesem Phänomen ist eine immer heterogenere Hardware.
Supercomputer integrieren Beschleuniger wie GPUs.
Mobile SoCs (bspw.  Smartphones) integrieren immer mehr Fähigkeiten.
Spezialhardware auszunutzen ist eine bekannte Methode, um den Energieverbrauch zu senken, was ein weiterer wichtiger Aspekt ist, welcher mit der reinen Geschwindigkeit abgewogen werde muss.
Zum Beispiel werden Supercomputer auch nach "Performance pro Watt" bewertet.
Zur Zeit sind systemnahe low-level Programmierer es gewohnt über Hardware nachzudenken, während der gemeine high-level Programmierer es vorzieht von der Plattform möglichst zu abstrahieren (bspw. Cloud).
"High-level" bedeutet nicht, dass Hardware irrelevant ist, sondern dass sie abstrahiert werden kann.
Falls Sie eine Java-Anwendung für Android entwickeln, kann der Akku ein wichtiger Aspekt sein.
Irgendwann müssen aber auch Hochsprachen resourcengewahr werden, um Geschwindigkeit oder Energieverbrauch zu verbessern.

Innerhalb des Transregio "Invasive Computing" habe ich an diesen Problemen gearbeitet.
In meiner Dissertation stelle ich ein Framework vor, mit dem man Hochsprachenanwendungen resourcengewahr machen kann, um so die Leistung zu verbessern.
Das könnte beispielsweise erhöhte Effizienz oder schnellerer Ausführung für das System als Ganzes bringen.

Ein Kerngedanke dabei ist, dass Anwendungen sich nicht selbst optimieren.
Stattdessen geben sie alle Informationen an das Betriebssystem.
Das Betriebssystem hat eine globale Sicht und trifft Entscheidungen über die Resourcen.
Diesen Prozess nennen wir "Invasion".
Die Aufgabe der Anwendung ist es, sich an diese Entscheidungen anzupassen, aber nicht selbst welche zu fällen.
Die Herausforderung besteht darin eine Sprache zu definieren, mit der Anwendungen Resourcenbedingungen und Leistungsinformationen kommunizieren.
So eine Sprache muss ausdrucksstark genug für komplexe Informationen, erweiterbar für neue Resourcentypen, und angenehm für den Programmierer sein.

Die zentralen Beiträge dieser Dissertation sind:

Ein theoretisches Modell der Resourcen-Verwaltung, um die Essenz des resourcengewahren Frameworks zu beschreiben,
  die Korrektheit der Entscheidungen des Betriebssystems bezüglich der Bedingungen einer Anwendung zu begründen
  und zum Beweis meiner Thesen von Effizienz und Beschleunigung in der Theorie.

Ein Framework und eine Übersetzungspfad resourcengewahrer Programmierung für die Hochsprache X10.
Zur Bewertung des Ansatzes haben wir Anwendungen aus dem High Performance Computing implementiert.
Eine Beschleunigung von 5x konnte gemessen werden.

Ein Speicherkonsistenzmodell für die X10 Programmiersprache, da dies ein notwendiger Schritt zu einer formalen Semantik ist, die das theoretische Modell und die konkrete Implementierung verknüpft.

Zusammengefasst zeige ich, dass resourcengewahre Programmierung in Hoch\-sprachen auf zukünftigen Architekturen mit vielen Kernen mit vertretbarem Aufwand machbar ist und die Leistung verbessert.