SoftwareX (Jan 2018)

libVersioningCompiler: An easy-to-use library for dynamic generation and invocation of multiple code versions

  • S. Cherubin,
  • G. Agosta

Journal volume & issue
Vol. 7
pp. 95 – 100

Abstract

Read online

We present libVersioningCompiler, a C++ library designed to support the dynamic generation of multiple versions of the same compute kernel in a HPC scenario. It can be used to provide continuous optimization, code specialization based on the input data or on workload changes, or otherwise to dynamically adjust the application, without the burden of a full dynamic compiler. The library supports multiple underlying compilers but specifically targets the llvm framework.We also provide examples of use, showing the overhead of the library, and providing guidelines for its efficient use. Keywords: Dynamic compilation, Versioning compiler, Continuous optimization