Motivation
In den letzten Jahren gibt es den Trend, in großen Parallelrechnern zusätzlich zu normalen Prozessoren (CPUs) auch Grafikprozessoren (GPUs) für Berechnungen einzusetzen. Letztere können bestimmte, stark parallelisierbare Berechnungsaufgaben sehr schnell abarbeiten. Jedoch laufen auf GPUs nicht alle Programme effizient, so dass ein ausschließlicher Einsatz von GPUs zum Rechnen nicht in Frage kommt. Datenparallele Programmiersprachen für GPUs unterscheiden sie sich stark von Standard-Sprachen für CPUs. Wenn nun in einem heterogenen System die gesamte Hardware genutzt werden soll, d. h. GPU und CPU, müssen zurzeit verschiedenste Programmierparadigmen kombiniert werden. Dies ist zeitaufwendig und fehleranfällig. Daher werden selten Programme geschrieben, die tatsächlich alle Komponenten effizient nutzen.
Ziele und Vorgehen
Die Partner im Projekt Mekong haben eine Methodik entwickelt, die es erlaubt, den erheblichen Zusatzaufwand für eine Nutzung von heterogenen Systemen komplett zu vermeiden. Zunächst wird davon ausgegangen, dass ein Programm in einer Programmiersprache für eine GPU geschrieben wird. Basierend auf diesem Quellcode kann das Programm in ein funktional identisches Programm umgewandelt werden, das gleichzeitig auf mehreren GPUs und CPUs laufen und somit ein heterogenes System effizient nutzen kann. Um heterogene Prozessorarchitekturen effizienter nutzen zu können, soll die Partitionierung von Programmen optimiert werden. Hierfür müssen evtl. entstandener Datenabhängigkeiten durch Kommunikation und Synchronisation aufgelöst werden. Durch die automatisierte Partitionierung soll die Programmierkomplexität für die Anwender signifikant verringert werden, weshalb eine optimierte Ausführung auf komplexen Rechensystemen mit minimaler Laufzeit beziehungsweise minimalem Energieverbrauch möglich wird.
Innovationen und Perspektiven
Das Mekong-Projekt zielt zunächst auf Rechner mit mehreren GPUs ab, lässt sich aber ebenfalls für skalierbare heterogene Systeme mit vielen CPUs und GPUs einsetzen. Prinzipiell ist das Konzept für beliebige Beschleunigerarchitekturen, d. h. GPU-Alternativen, nutzbar, sofern sie datenparallele Programmiermodelle unterstützen. Das Ergebnis des Mekong Projektes wird im Rahmen einer Open-Source-Lizenz frei verfügbar sein.