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
Disciplines
Computer Sciences (100%)
Keywords
-
Static Analysis
Heterogeneous architectures consisting of a multicore CPU and a general-purpose graphics processing unit (GPGPU) have become the dominant computing platform for desktops, servers and handheld embedded devices. Heterogeneous multicores are notoriously difficult to program, because sequential programming languages assume a single instruction stream and a single, uniform memory image. As sequential languages provide insufficient parallel hardware abstractions, performance and portability of software on multicore architectures is greatly hampered and programmer productivity is low. The stream programming paradigm has turned out to be an effective approach for programming multicore architectures. Stream programming languages facilitate application domains characterized by regular sequences of data, such as digital signal processing, audio, video, graphics, cryptography and networking. Major obstacles stand in the way of widespread adaption of stream programming languages: (1) current special-purpose programming languages like MIT`s Streamit do not integrate with legacy code-bases in C and C++, thereby lacking acceptance by practitioners from industries. (2) compilers and run-time systems cannot adapt stream programs to varying hardware and load conditions, which results in low performance and underutilized processing capacity. To overcome these obstacles, we will conduct the following research. Novelty 1: we will research compilation support for library-level stream programming constructs with OO languages (C++ in particular). Program slicing will determine the stream-parallel portions of a program, which then become the focus of optimizations that remove bottlenecks and increase the amount of parallelism wrt. the target hardware. We extend previous work on libraries that are compiled without optimizations. Library-level stream- programming support that is tightly integrated with the host language and the compiler is essential for performance, and for the application of the stream programming paradigm with legacy code. Novelty 2: we will research static program analysis techniques for stream programming languages. Static analysis information from stream programs will enable compiler optimizations that increase the efficiency of stream programs. E.g., static analysis results on execution time and communication overhead of actors (the major building blocks of stream programs) are a pre-requisite for load-balancing stream programs across multiple, heterogeneous cores. Novelty 3: we will invest just-in-time (JIT) compilation techniques to produce native code that is tuned to the underlying architecture. Because parallel architectures differ in important ways, i.e., in the types, numbers and configurations of the available parallel execution units, a JIT compiler can perform target-specific optimizations that are not available with static compilation. We will incorporate stream program slicing, static analyses and code generation techniques as additional passes to LLVM, which is a state-of-the-art compiler infrastructure that already provides a modular and extendible frontend, an optimizing middle-end, various backends, and a JIT. The PI has previous experience with LLVM, in particular its middle and backends.
Heterogeneous architectures consisting of a multicore CPU and a general-purpose graphics processing unit (GPGPU) have become the dominant computing platform for desktops, servers and handheld embedded devices. Heterogeneous multicores are notoriously difficult to program, because sequential programming languages assume a single instruction stream and a single, uniform memory image. As sequential languages provide insufficient parallel hardware abstractions, performance and portability of software on multicore architectures is greatly hampered and programmer productivity is low.The stream programming paradigm has turned out to be an effective approach for programming multicore architectures. Stream programming languages facilitate application domains characterized by regular sequences of data, such as digital signal processing, audio, video, graphics, cryptography and networking. Major obstacles stand in the way of widespread adaption of stream programming languages: (1) current special-purpose programming languages like MITs Streamit do not integrate with legacy code-bases in C and C++, thereby lacking acceptance by practitioners from industries. (2) compilers and run-time systems cannot adapt stream programs to varying hardware and load conditions, which results in low performance and underutilized processing capacity. To overcome these obstacles, we will conduct the following research.The following methods were studied in Project SAJitcore++:1. Compilation support for library-level stream programming constructs with OO languages (C++in particular).2. Static program analysis techniques for stream programming languages. Static analysis information from stream programs will enable compiler optimizations that increase the efficiency of stream programs.3. Just-in-time (JIT) compilation techniques to produce native code that is tuned to the underlying architecture.Stream program slicing, static analyses and code generation techniques were incorporated as additional passes to LLVM.
- Technische Universität Wien - 100%
- Bernd Burgstaller, Yonsei University Seoul
Research Output
- 20 Citations
- 9 Publications
-
2016
Title JParEnt: Parallel Entropy Decoding for JPEG Decompression on Heterogeneous Multicore Architectures. Type Conference Proceeding Abstract Author Burgstaller B Et Al Conference Proc. of the 2016 International Workshop on Programming Models and Applications for Multicores and Manycores, PMAM 2016, ACM, Barcelona, March 2016 -
2016
Title JParEnt DOI 10.1145/2883404.2883423 Type Conference Proceeding Abstract Author Sodsong W Pages 104-113 -
2016
Title Kronecker Algebra for Static Analysis of Barriers in Ada DOI 10.1007/978-3-319-39083-3_10 Type Book Chapter Author Mittermayr R Publisher Springer Nature Pages 145-159 -
2015
Title Dynamic partitioning-based JPEG decompression on heterogeneous multicore architectures DOI 10.1002/cpe.3620 Type Journal Article Author Sodsong W Journal Concurrency and Computation: Practice and Experience Pages 517-536 Link Publication -
2017
Title Kronecker Algebra-based Deadlock Analysis in the Linux Kernel. Type Journal Article Author Park Y Journal Technical Report TR-0003, ELC Lab, Dept. Computer Science, Yonsei University, 2017 -
2014
Title Kronecker Algebra for Static Analysis of Ada Programs with Protected Objects DOI 10.1007/978-3-319-08311-7_4 Type Book Chapter Author Burgstaller B Publisher Springer Nature Pages 27-42 -
2014
Title Improved Branch Prediction for Just-in-Time Decompression of Canonical Huffman Bytecode Streams DOI 10.1007/978-94-017-8798-7_82 Type Book Chapter Author Jeong C Publisher Springer Nature Pages 719-729 -
2016
Title A Generic Graph Model for WCET Analysis of Multi-Core Concurrent Applications DOI 10.4236/jsea.2016.95015 Type Journal Article Author Obert M Journal Journal of Software Engineering and Applications Pages 182-198 Link Publication -
2015
Title LaminarIR: compile-time queues for structured streams DOI 10.1145/2737924.2737994 Type Conference Proceeding Abstract Author Ko Y Pages 121-130