Schematische Übersicht "Heterogene Hardwarestrukturen"
Viele Systeme vom Desktoprechner bis zum Smartphone besitzen gleichzeitig unterschiedliche Hardwarearchitekturen wie beispielsweise Prozessoren und GPUs. Eine effektive Nutzung dieser heterogenen Ressourcen stellt neue Herausforderungen für Programmierer dar. Wir untersuchen Konzepte für eine einfache und effektive Programmierung heterogener Systeme.

Heterogene Hardware

Unsere Arbeitsgruppe befasst sich unter anderem mit der Programmierung heterogener Hardware. Hierbei untersuchen wir folgene Themengebiete:

 

1)        Prozessorarchitekturen

 

 


Unsere Untersuchungen konzentrieren sich auf Beschleunigerplattformen wie Graphikkarten (GPU), Field Programmable Gate Arrays (FPGA), Intel ® Xeon Phi ™ sowie x86-basierte Architekturem mit SIMD Erweiterungen(AVX,SSE,...). Im Besonderen interessiern wir uns für die Eignung von Graphikkarten für Bildverarbeitungsalgorithmen vor dem Hintergrund der Erweiterungen von Graphikkartenarchitekturen für ein vereinfachtes Programmiermodell.

 

2)        Architekturspezifische Bindung von Applikationen

 

Eines unserer Forschungsschwerpunkte ist Untersuchung der effizienten Nutzung von Beschleunigerplattformen für die Bildverarbeitung. Die unterschiedlichen Plattformen erfordern unterschiedliche Optimierungsstrategien und Algorithmustransformationen. Wir untersuchen diese Strategien und Transformationen im Hinblick auf eine zukünftige, weitgehend automatisierte, Codetransformation. Ein Beispiel für GPUs findet sich in der Publikation:

Konrad Moren, Diana Göhringer and Thomas Perschke, “Accelerating Local Feature Extraction using OpenCL on Heterogeneous Platforms”, DASIP 2014, Madrid, October 2014.

 

3)        Codeanalyse und Optimierungen für parallele Architekturen auf Taskebene

Komplexe Bildverarbeitungsalgorithmen bestehen im Normalfall aus verschiedenen Teilalgorithmen mit unterschiedlicher arithmetischer Komplexität und unterschiedlichen zu verarbeitenden Datenmengen. Aus der Sicht des Programmierers ist die Portierung diese Teilalgorithmen auf heterogene Systeme in vielen Fällen sehr komplex. Wir untersuchen die Möglichkeit, ein Laufzeitsystem zu entwickeln, welches diese Aufgabe zum Teil übernehmen kann und dabei performant, skalierbar und adaptiv ist. Hierfür untersuchen wir Programmiermodelle wie beispielsweise OpenCL.

 

analysis