Multicore Effiziente Embedded-Multicore-Programmierung

Autor / Redakteur: Oliver Oey und Timo Stripf* / Martina Hafner

Durch immer weiter steigende Performanzanforderungen wird in immer mehr Bereichen anstelle von Einkernprozessoren auf Mehrkernprozessoren gesetzt. Dieser Wechsel ist im Bereich von Desktop-PCs oder Smartphones bereits vollzogen, im Bereich der eingebetteten Systeme ist der Umbruch jedoch noch im Gange. Durch die parallele Ausführung von Programmen kann sowohl die Performanz gesteigert als auch die Leistungsaufnahme reduziert werden.

Anbieter zum Thema

(Bild: ClipDealer)

Bis heute verursacht die parallele Programmierung jedoch einen hohen Zeit- und Kostenaufwand und erfordert spezielles Wissen über die Zielsysteme. Innerhalb des ALMA-EU-Projekts hat ein Konsortium aus Forschung und Industrie eine Werkzeugkette entwickelt, die die parallele Programmierung erheblich vereinfacht. Mittels automatischer Parallelisierung wird sequentieller Scilab/MATLAB-Code für eingebettete Multicore-Prozessoren parallelisiert. Dadurch kann nicht nur die aufwändige manuelle Parallelisierung eingespart, sondern auch der Code auf verschiedenen Prozessoren wiederverwendet werden.

Bildergalerie
Bildergalerie mit 5 Bildern

Motivation

Laut Studien [1] ist die Programmierung von eingebetteten Mehrkernsystemen 4,5 mal so teuer, dauert 25% länger und benötigt 3 mal so viele Software-Ingenieure wie die Programmierung von Einkernsystemen. Das Ziel des EU-Projekts ALMA war es, diese Anforderungen an den Entwickler zu reduzieren. Dazu wurde die Entwicklung in zwei Bereiche aufgeteilt: zum einen die reine Programmierung des Algorithmus und zum anderen in die Anpassung an die gegebene Hardware. Um diese Anforderungen an die Entwickler zu reduzieren, wurde im EU-Projekt ALMA eine automatische Parallelisierung und Codeerzeugung aus arraybasierten Programmiersprachen untersucht. Zu diesen gehören MATLAB und ähnliche Sprachen wie Scilab, die sehr nah an der rein mathematischen Beschreibung sind und als Standarddatentyp auf Matrizen arbeiten. Aus diesem Grund eignen sie sich auch gut für Anwender, die keinen großen Programmierhintergrund haben. Der Programmierer kann sich auf die Entwicklung des Algorithmus konzentrieren, während die Anpassungen an die Zielhardware automatisch durch die Werkzeugkette erledigt werden.

ALMA Projektübersicht

Die ALMA-Werkzeugkette, wie sie in [2] vorgestellt wurde, ist in mehrere Teilkomponenten unterteilt, die in Bild 1 der Bildergalerie dargestellt werden. Als Eingangsdateien kommen die Anwendungen, die in Scilab/MATLAB geschrieben wurden, sowie eine abstrakte Architekturbeschreibung zum Einsatz. Das Matrix FrontEnd wandelt den Eingangscode zunächst in einen sequentiellen C-Code um, der als Basis für die Parallelisierung verwendet wird. Die Parallelisierungswerkzeuge erzeugen optimierten Code für die Zielarchitekturen, indem der Code parallelisiert und an die Eigenheiten der Zielplattformen angepasst wird, wie sie in der Architekturbeschreibung hinterlegt sind. In weiteren Optimierungsschritten können Laufzeitinformationen, die mit dem Multicore-Simulator ermittelt werden, für eine bessere Auslastung der Hardware verwendet werden.

Evaluation

Zur Evaluation des Ansatzes kamen zwei Zielarchitekturen sowie zwei Testanwendungen zum Einsatz. Die Architekturen waren aufgeteilt in den wissenschaftlichen Prozessor Kahrisma [3] sowie das X2014 System der Firma Recore Systems. Beide Plattformen setzen auf verteilten Speicher sowie mehrere unabhängig arbeitende Kerne. Die Zielanwendungen kamen zum einen aus der Bildverarbeitung vom Fraunhofer IOSB, bei der eine Objekterkennung mit Hilfe des SIFT-Algorithmus durchgeführt wurde, und zum anderen aus der Telekommunikation von Intracom Telecom, in dem Teile des WiMax Standards in Software ausgeführt werden.

(ID:44287984)