Static Analysis and Just-in-Time Compilation Support for Heterogeneous Multicore Architectures
Static Analysis and Just-in-Time Compilation Support for Heterogeneous Multicore Architectures
Bilaterale Ausschreibung: Korea
Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
Static Analysis
Parallele heterogene Architekturen, bestehend aus einer Mehrkern-CPU und einem programmierbaren Graphikprozessor (GPGPU), haben sich zur dominierenden Computer-Plattform für Desktops, Server und eingebettete Systeme entwickelt. Die Programmierung paralleler heterogener Architekturen erweist sich als überaus schwierig, da sequentielle Programmiersprachen nur einen einzelnen Instruktionsstrom sowie einen einzigen uniformen Adressraum vorsehen. Die ungenügende Abstraktion der parallelen Hardware (mehrere Prozessoren, lokale Speicher usw.) beeinträchtigt Portabilität und Effizienz von Software und erhöht die Software- Entwicklungskosten beträchtlich. Strom-Programmierung hat sich als adäquate Methode für die Programmierung von Mehrkern-Architekturen erwiesen. Strom-Programmiersprachen unterstützen Anwendungen, die sich durch stark repetitive Berechnungen auf gleichförmigen Datenströmen charakterisieren lassen. Zu den Anwendungsbereichen für Stromprogrammiersprachen zählen digitale Signalverarbeitung, Audio, Video, Graphik, Kryptographie und Computernetzwerke. Trotz Forschungsfortschritten fehlt Stromprogrammiersprachen die Akzeptanz für industrielle Anwendungen. Dies ist maßgeblich auf zwei Gründe zurückzuführen: (1) derzeitige Stromprogrammiersprachen wie MIT`s Streamit lassen sich nicht mit verbreiteten Sprachen wie C und C++ kombinieren, was eine industrielle Verwendung weitgehend ausschließt. (2) Compiler und Laufzeitsysteme sind unausgereift und versagen bei der Anpassung von Stromprogrammen an unterschiedliche parallele Architekturen und Last-Verteilungen, was ineffizienten Programmablauf und unausgelastete Hardware-Ressourcen bewirkt. Zur Lösung dieser Probleme wird die Realisierung der folgenden, neuen Methoden vorgeschlagen: Neuerung 1: Sprachkonstrukte für Stromprogrammierung werden in Form von Laufzeitbibliotheken für OO- Sprachen angeboten, um die Integration mit Legacy-Code zu ermöglichen. Program-Slicing für Stromprogramme, also die Herauslösung der Sprachkonstrukte durch den Compiler, soll den strom-parallelen Programmanteil spezifischen Optimierungen, insb. zur Programm-Parallelisierung, zuführen. Neuerung 2: Statische Programmanalyse von Stromprogrammen soll die für Programmtransformationen nötige Information bereitstellen, um die Effizienz von Stromprogrammen auf parallelen heterogenen Architekturen massiv zu steigern. Z.B. ist es für Last-Verteilung und Partitionierung von Stromprogrammen notwendig, statische Analyse-Information bez. Laufzeit und Kommunikationsverhalten eines Programms zu kennen. Neuerung 3: just-in-time (JIT) Compilierungs-Techniken für Stromprogramme sollen gewährleisten, dass ausführbare Programme speziell für die aktuelle Ablaufumgebung (Anzahl verfügbarer Kerne auf CPU/GPGPU etc.) abgestimmt werden. Da sich parallele Architekturen signifikant voneinander unterscheiden, eröffnet JIT- Compilierung target-spezifische Optimierungen, die allein mit statischer Compilierung nicht durchführbar sind. Die drei vorgeschlagenen Techniken, nämlich Stromprogramm-Slicing, statische Analyse und Code-Generierung für Stromprogramme werden für die LLVM Compiler-Infrastruktur realisiert. LLVM verfügt über eine modulare SW-Architektur für Front-, Middle- und Backend, sowie einen JIT Compiler. Das Projekt-Team verfügt über Erfahrung mit LLVM, insb. dem Middle-End und dem Codegenerator.
Parallele heterogene Architekturen, bestehend aus einer Mehrkern-CPU und einem programmierbaren Graphikprozessor (GPGPU), haben sich zur dominierenden Computer-Plattform für Desktops, Server und eingebettete Systeme entwickelt. Die Programmierung paralleler heterogener Architekturen erweist sich als überaus schwierig, da sequentielle Programmiersprachen nur einen einzelnen Instruktionsstrom sowie einen einzigen uniformen Adressraum vorsehen. Die ungenügende Abstraktion der parallelen Hardware (mehrere Prozessoren, lokale Speicher usw.) beeinträchtigt Portabilität und Effizienz von Software und erhöht die Software-Entwicklungskosten beträchtlich.Strom-Programmierung hat sich als adäquate Methode für die Programmierung von Mehrkern- Architekturen erwiesen. Strom-Programmiersprachen unterstützen Anwendungen, die sich durch stark repetitive Berechnungen auf gleichförmigen Datenströmen charakterisieren lassen. Zu den Anwendungsbereichen für Stromprogrammiersprachen zählen digitale Signalverarbeitung, Audio, Video, Graphik, Kryptographie und Computernetzwerke. Trotz Forschungsfortschritten fehlt Stromprogrammiersprachen die Akzeptanz für industrielle Anwendungen. Dies ist maßgeblich auf zwei Gründe zurückzuführen: (1) derzeitige Stromprogrammiersprachen wie MITs Streamit lassen sich nicht mit verbreiteten Sprachen wie C und C++ kombinieren, was eine industrielle Verwendung weitgehend ausschließt. (2) Compiler und Laufzeitsysteme sind unausgereift und versagen bei der Anpassung von Stromprogrammen an unterschiedliche parallele Architekturen und Last-Verteilungen, was ineffizienten Programmablauf und unausgelastete Hardware-Ressourcen bewirkt.Folgende Methoden wurden in Projekt SAJiTcore++ untersucht:1. Sprachkonstrukte für Stromprogrammierung werden in Form von Laufzeitbibliotheken fürOO-Sprachen angeboten, um die Integration mit Legacy-Code zu ermöglichen.2. Statische Programmanalyse von Stromprogrammen soll die für Programmtransformationen nötige Information bereitstellen, um die Effizienz von Stromprogrammen auf parallelen heterogenen Architekturen massiv zu steigern.3. just-in-time (JIT) Compilierungs-Techniken für Stromprogramme sollen gewährleisten, dass ausführbare Programme speziell für die aktuelle Ablaufumgebung (Anzahl verfügbarer Kerne auf CPU/GPGPU etc.) abgestimmt werden. Die drei vorgeschlagenen Techniken, nämlich Stromprogramm-Slicing, statische Analyse und Code-Generierung für Stromprogramme wuden für die LLVM Compiler- Infrastruktur realisiert.
- Technische Universität Wien - 100%
- Bernd Burgstaller, Yonsei University Seoul - Republik Korea
Research Output
- 20 Zitationen
- 9 Publikationen
-
2016
Titel JParEnt: Parallel Entropy Decoding for JPEG Decompression on Heterogeneous Multicore Architectures. Typ Conference Proceeding Abstract Autor Burgstaller B Et Al Konferenz Proc. of the 2016 International Workshop on Programming Models and Applications for Multicores and Manycores, PMAM 2016, ACM, Barcelona, March 2016 -
2016
Titel JParEnt DOI 10.1145/2883404.2883423 Typ Conference Proceeding Abstract Autor Sodsong W Seiten 104-113 -
2016
Titel Kronecker Algebra for Static Analysis of Barriers in Ada DOI 10.1007/978-3-319-39083-3_10 Typ Book Chapter Autor Mittermayr R Verlag Springer Nature Seiten 145-159 -
2015
Titel Dynamic partitioning-based JPEG decompression on heterogeneous multicore architectures DOI 10.1002/cpe.3620 Typ Journal Article Autor Sodsong W Journal Concurrency and Computation: Practice and Experience Seiten 517-536 Link Publikation -
2017
Titel Kronecker Algebra-based Deadlock Analysis in the Linux Kernel. Typ Journal Article Autor Park Y Journal Technical Report TR-0003, ELC Lab, Dept. Computer Science, Yonsei University, 2017 -
2014
Titel Kronecker Algebra for Static Analysis of Ada Programs with Protected Objects DOI 10.1007/978-3-319-08311-7_4 Typ Book Chapter Autor Burgstaller B Verlag Springer Nature Seiten 27-42 -
2014
Titel Improved Branch Prediction for Just-in-Time Decompression of Canonical Huffman Bytecode Streams DOI 10.1007/978-94-017-8798-7_82 Typ Book Chapter Autor Jeong C Verlag Springer Nature Seiten 719-729 -
2016
Titel A Generic Graph Model for WCET Analysis of Multi-Core Concurrent Applications DOI 10.4236/jsea.2016.95015 Typ Journal Article Autor Obert M Journal Journal of Software Engineering and Applications Seiten 182-198 Link Publikation -
2015
Titel LaminarIR: compile-time queues for structured streams DOI 10.1145/2737924.2737994 Typ Conference Proceeding Abstract Autor Ko Y Seiten 121-130