KART – A Runtime Compilation Library for Improving HPC Application Performance
Please always quote using this URN: urn:nbn:de:0297-zib-60730
- The effectiveness of ahead-of-time compiler optimization heavily depends on the amount of available information at compile time. Input-specific information that is only available at runtime cannot be used, although it often determines loop counts, branching predicates and paths, as well as memory-access patterns. It can also be crucial for generating efficient SIMD-vectorized code. This is especially relevant for the many-core architectures paving the way to exascale computing, which are more sensitive to code-optimization. We explore the design-space for using input-specific information at compile-time and present KART, a C++ library solution that allows developers to compile, link, and execute code (e.g., C, C++ , Fortran) at application runtime. Besides mere runtime compilation of performance-critical code, KART can be used to instantiate the same code multiple times using different inputs, compilers, and options. Other techniques like auto-tuning and code-generation can be integrated into a KART-enabled application instead of being scripted around it. We evaluate runtimes and compilation costs for different synthetic kernels, and show the effectiveness for two real-world applications, HEOM and a WSM6 proxy.
Author: | Matthias NoackORCiD, Florian WendeORCiD, Georg Zitzlsberger, Michael Klemm, Thomas Steinke |
---|---|
Document Type: | ZIB-Report |
Date of first Publication: | 2016/10/31 |
Series (Serial Number): | ZIB-Report (16-48) |
ISSN: | 1438-0064 |
Published in: | Appeared in: ISC High Performance Workshops 2017: IXPUG Workshop "Experiences on Intel Knights Landing at the One Year Mark" LNCS 10524, 2017 |
DOI: | https://doi.org/10.1007/978-3-319-67630-2_29 |