Sunho Kim

Google Summer of Code 2023

email: ksunhokim123@gmail.com

Education: B.S. in Computer Science, University of California San Diego

Completed project: Re-optimization using JITLink
In Just-In-Time compilers we often choose a low optimization level to minimize compile time and improve launch times and latencies, however some functions (which we call hot functions) are used very frequently and for these functions it is worth optimizing more heavily. In general hot functions can only be identified at runtime (different inputs will cause different functions to become hot), so the aim of the reoptimization project is to build infrastructure to (1) detect hot functions at runtime and (2) compile them a second time at a higher optimization level, hence the name “re-optimization”. There are many possible approaches to both parts of this problem. E.g. hot functions could be identified by sampling, or using existing profiling infrastructure, or by implementing custom instrumentation. Reoptimization could be applied to whole functions, or outlining could be used to enable optimization of portions of functions. Re-entry into the JIT infrastructure from JIT’d code might be implemented on top of existing lazy compilation, or via a custom path.

Project Proposal: URL

Project Reports: Final Report

Mentors: Vassil Vassilev, Stefan Gränitz, Lang Hames

Completed project: Write JITLink support for a new format/architecture (ELF/AARCH64)
JITLink is LLVM’s new JIT linker API – the low-level API that transforms compiler output (relocatable object files) into ready-to-execute bytes in memory. With its new architecture, it is able to support a variety of new features, which includes static initializer, thread local storage, and small code model, that were not possible in RuntimeDyld, the old JIT API. JITLink’s generic linker algorithm needs to be specialized to support the target object format (COFF, ELF, MachO), and architecture (arm, arm64, i386, x86-64). This project aims to implement the JITLink specialization for ELF/aarch64 which is required to use JITLink in arm64 linux.

Project Proposal: URL

Project Reports: Final Report

Mentors: Vassil Vassilev, Stefan Gränitz, Lang Hames

Presentations


Multiline input and Windows support in clang-repl, CaaS Monthly Meeting, 2 February 2023
JITLink: Native Windows JITing in LLVM, CaaS Monthly Meeting, 3 November 2022

Re-optimization using JITLink, Slides, Team Meeting, 27 September 2023
Re-optimization using JITLink, Slides, Team Meeting, 26 July 2023
Write JITLink support for new format/architecture Current Progress, Slides, Team Meeting, 10 August 2022
Write JITLink support for a new format/architecture - Roadmap, Slides, Team Meeting, 8 June 2022