Mit Terra und Lua hochperformant rechnen

Ein Low-Level-Gegenstück zur Sprache Lua soll eine neue Möglichkeit zum Generieren hochperformanten Codes und Kompilieren domänenspezifischer Sprachen für HPC-Anwendungen bieten.

In Pocket speichern vorlesen Druckansicht 13 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Zach DeVito und ein Team von Wissenschaftlern der Universitäten Stanford und Purdue haben Informationen zu einem neuen Ansatz dazu veröffentlicht, Code für hochperformantes Rechnen zu erzeugen. Die Forscher nutzen in ihrem Ansatz die Scripting-Sprache Lua, um eine neue Low-Level-Sprache namens Terra auszuführen. Hierbei lassen sich Optimierungen in der High-Level-Sprache verfassen und eingebaute Konstrukte nutzen, um hochperformanten Terra-Code zu erstellen und auszuführen.

Die Entwickler sagen, dass Terra auch als einbettbarer Just-in-time-Compiler dienen kann, da sich Lua einfach in C-Anwendungen einbinden lässt und so die Möglichkeit besteht, Lua-Programme zur Laufzeit zu erstellen und dann in Terra-Code zu kompilieren. Terra kann außerdem als eigenständige Low-Level-Sprache dienen, die unabhängig von Lua läuft; der entsprechende Code lässt sich als .o-Datei oder Executable speichern.

Das Team sieht seinen Ansatz anderen gegenüber überlegen, weil es dort aufgrund der Komplexität beispielsweise schwierig ist, Laufzeitstatistiken für problemspezifische Optimierungsvorgänge zurückzugeben. So werden domänenspezifische Sprachen zum Hochleistungsrechnen (High-Performance Computing, HPC) normalerweise mit Optimierungsfunktionen durchgeführt, die domänenspezifische Transformationen für die Ausführungsplanung vornehmen, die den Code dann wiederum an den Compiler weitergibt, der ihn dann für eine Laufzeit umsetzt.

Bei Terra hingegen können Entwickler High-Level-Code, der mit in der selben Datei hinterlegtem Terra-Code interagieren kann, im selben lexikalen Raum schreiben, sodass Variablen in Lua und Terra zur Verfügung stehen. Terras Low-Level-Code-Genierung lässt den Terra-Code dann in einer eigenen Umgebung laufen – unabhängig von Luas Laufzeit, um sicherzustellen, dass keine Lua-Funktionen aus Versehen in der Terra-Ausführung landen. Terra kann außerdem auf Hardware-Funktionen wie Vektoranweisungen zugreifen.

Um ihren Ansatz zu testen, haben die Terra-Entwickler einige mehrsprachige Systeme komplett neu in Terra implementiert. Hier konnte beispielsweise eine DSL-Vorlagenberechnung 2,3-mal schneller zu einem Ergebnis kommen, als die entsprechende, handgeschriebene C-Implementierung.

Informationen zum Umgang mit Terra lassen sich einem Getting Started Guide auf der Projektseite entnehmen. Dort findet sich auch eine Veröffentlichung mit Details zum Thema. Der Quellcode des sogenannten "Low-Level-Gegenstücks zu Lua" ist auf GitHub verfügbar. (jul)