Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleOctober 2021
CompGen: generation of fast JIT compilers in a multi-language VM
DLS 2021: Proceedings of the 17th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 35–47https://doi.org/10.1145/3486602.3486930The first Futamura projection enables compilation and high performance code generation of user programs by partial evaluation of language interpreters. Previous work has shown that online partial evaluation can yield the same peak performance as a ...
- research-articleNovember 2020
DelayRepay: delayed execution for kernel fusion in Python
- John Magnus Morton,
- Kuba Kaszyk,
- Lu Li,
- Jiawen Sun,
- Christophe Dubach,
- Michel Steuwer,
- Murray Cole,
- Michael F. P. O'Boyle
DLS 2020: Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 43–56https://doi.org/10.1145/3426422.3426980Python is a popular, dynamic language for data science and scientific computing. To ensure efficiency, significant numerical libraries are implemented in static native languages. However, performance suffers when switching between native and non-native ...
- short-paperOctober 2019
Practical second Futamura projection: partial evaluation for high-performance language interpreters
SPLASH Companion 2019: Proceedings Companion of the 2019 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityPages 29–31https://doi.org/10.1145/3359061.3361077Partial evaluation, based on the first Futamura projection, allows compiling language interpreters with given user programs to efficient target programs. GraalVM is an example system that implements this mechanism. It combines partial evaluation with ...
- research-articleSeptember 2018
Parallel trace register allocation
ManLang '18: Proceedings of the 15th International Conference on Managed Languages & RuntimesArticle No.: 7, Pages 1–7https://doi.org/10.1145/3237009.3237010Register allocation is a mandatory task for almost every compiler and consumes a significant portion of compile time. In a just-in-time compiler, compile time is a particular issue because compilation happens during program execution and contributes to ...
- research-articleSeptember 2017
Applying Optimizations for Dynamically-typed Languages to Java
- Matthias Grimmer,
- Stefan Marr,
- Mario Kahlhofer,
- Christian Wimmer,
- Thomas Würthinger,
- Hanspeter Mössenböck
ManLang 2017: Proceedings of the 14th International Conference on Managed Languages and RuntimesPages 12–22https://doi.org/10.1145/3132190.3132202While Java is a statically-typed language, some of its features make it behave like a dynamically-typed language at run time. This includes Java's boxing of primitive values as well as generics, which rely on type erasure.
This paper investigates how ...
-
- invited-talkApril 2017
Micro-Benchmarking Considered Harmful
ICPE '17: Proceedings of the 8th ACM/SPEC on International Conference on Performance EngineeringPage 1https://doi.org/10.1145/3030207.3053656Measuring the time spent on small individual fractions of program code is a common technique for analysing performance behavior and detecting performance bottlenecks. The benefits of the approach include a detailed individual attribution of performance ...
- research-articleOctober 2016
Bringing low-level languages to the JVM: efficient execution of LLVM IR on Truffle
VMIL 2016: Proceedings of the 8th International Workshop on Virtual Machines and Intermediate LanguagesPages 6–15https://doi.org/10.1145/2998415.2998416Although the Java platform has been used as a multi-language platform, most of the low-level languages (such as C, Fortran, and C++) cannot be executed efficiently on the JVM. We propose Sulong, a system that can execute LLVM-based languages on the ...
- short-paperJuly 2016
Sulong - execution of LLVM-based languages on the JVM: position paper
ICOOOLPS '16: Proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and SystemsArticle No.: 7, Pages 1–4https://doi.org/10.1145/3012408.3012416For the last decade, the Java Virtual Machine (JVM) has been a popular platform to host languages other than Java. Language implementation frameworks like Truffle allow the implementation of dynamic languages such as JavaScript or Ruby with competitive ...
- research-articleMay 2016
CAOS: combined analysis with online sifting for dynamic compilation systems
CF '16: Proceedings of the ACM International Conference on Computing FrontiersPages 110–118https://doi.org/10.1145/2903150.2903151Dynamic compilation has a great impact on the performance of virtual machines. In this paper, we study the features of dynamic compilation and then unveil objectives for optimizing dynamic compilation systems. Following these objectives, we propose a ...
- demonstrationSeptember 2015
Demo: Dynamic Neutralization of Data Leakages
S3 '15: Proceedings of the 2015 Workshop on Wireless of the Students, by the Students, & for the StudentsPage 21https://doi.org/10.1145/2801694.2802141The security of hardware-software systems is at risk from a wide range of attack vectors that appear at various stages during the execution of machine code. The existing approaches for repairing software defects have numerous restrictions with respect ...
- research-articleAugust 2015
An incremental rendering VM
HPG '15: Proceedings of the 7th Conference on High-Performance GraphicsPages 51–60https://doi.org/10.1145/2790060.2790073We introduce an incremental rendering layer on top of standard graphics APIs such as OpenGL or DirectX in the form a virtual machine (VM), which efficiently maintains an optimized, compiled representation of arbitrary high-level scene representations at ...
- research-articleJune 2015
Snippets: Taking the High Road to a Low Level
ACM Transactions on Architecture and Code Optimization (TACO), Volume 12, Issue 2Article No.: 20, Pages 20:1–20:25https://doi.org/10.1145/2764907When building a compiler for a high-level language, certain intrinsic features of the language must be expressed in terms of the resulting low-level operations. Complex features are often expressed by explicitly weaving together bits of low-level IR, a ...
- research-articleSeptember 2014
TruffleC: dynamic execution of C on a Java virtual machine
PPPJ '14: Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and ToolsPages 17–26https://doi.org/10.1145/2647508.2647528This paper presents TruffleC, a C interpreter that allows the dynamic execution of C code on top of a Java Virtual Machine (JVM). Rather than producing a static build of a C application, TruffleC is a self-optimizing abstract syntax tree (AST) ...
- ArticleAugust 2014
Optimizing Memory Access with Fast Address Computation on a MIPS Architecture
NAS '14: Proceedings of the 2014 9th IEEE International Conference on Networking, Architecture, and StoragePages 143–147https://doi.org/10.1109/NAS.2014.31A 64-bit RISC processor is designed for large applications that need large memory address. Due to the restriction of the instruction fixed length, loading a 64-bit address needs a number of instructions, leading to a penalty both of memory performance ...
- research-articleJanuary 2014
A LLVM Extension for the Generation of Low Overhead Runtime Program Specializer
ADAPT '14: Proceedings of International Workshop on Adaptive Self-tuning Computing SystemsPages 14–16https://doi.org/10.1145/2553062.2553064Program specialization is a common way to improve program performance. From a generic implementation of an algorithm, a derived implementation is generated by fixing some inputs. Many tools and languages enable this optimization at compile time, like C++...
- research-articleDecember 2013
Exploring single and multilevel JIT compilation policy for modern machines 1
ACM Transactions on Architecture and Code Optimization (TACO), Volume 10, Issue 4Article No.: 22, Pages 1–29https://doi.org/10.1145/2541228.2541229Dynamic or Just-in-Time (JIT) compilation is essential to achieve high-performance emulation for programs written in managed languages, such as Java and C#. It has been observed that a conservative JIT compilation policy is most effective to obtain good ...
- research-articleSeptember 2013
Optimising purely functional GPU programs
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 49–60https://doi.org/10.1145/2500365.2500595Purely functional, embedded array programs are a good match for SIMD hardware, such as GPUs. However, the naive compilation of such programs quickly leads to both code explosion and an excessive use of intermediate data structures. The resulting slow-...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleAugust 2013
Next Generation Asynchronous Adaptive Specialization for Data-Parallel Functional Array Processing in SAC: Accelerating the Availability of Specialized High Performance Code
IFL '13: Proceedings of the 25th symposium on Implementation and Application of Functional LanguagesPages 117–128https://doi.org/10.1145/2620678.2620690Data-parallel processing of multi-dimensional functional/immutable arrays is characterized by a fundamental trade-off between software engineering principles on the one hand and runtime performance concerns on the other hand. Whereas the former demand ...
- research-articleJanuary 2013
Code specialization for red-black tree management algorithms
ADAPT '13: Proceedings of the 3rd International Workshop on Adaptive Self-Tuning Computing SystemsArticle No.: 6, Pages 1–3https://doi.org/10.1145/2484904.2484910A lot of work is spent on low-level optimization for regular computations; from instruction scheduling and cache-aware design to intensive use of SIMD instructions. Meanwhile, irregular applications, especially pointer intensive ones, are often only ...
- research-articleSeptember 2012
Parallel programming in Haskell almost for free: an embedding of intel's array building blocks
FHPC '12: Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computingPages 3–14https://doi.org/10.1145/2364474.2364477Nowadays, performance in processors is increased by adding more cores or wider vector units, or by combining accelerators like GPUs and traditional cores on a chip. Programming for these diverse architectures is a challenge. We would like to exploit all ...