Date & Time
Thursday, November 18, 2021, 9:30 AM - 10:00 AM
Name
Lightning Talks
Description

1) Overflowing with Strings: A newish dimension in DWARF size concerns
2) Automatic and Customizable Code Rewriting and Refactoring with Clang
3) LTO and JIT Support in LLVM OpenMP Target Offloading
4) Packaging LLVM Snapshots
5) OpenCL support in clang status: OpenCL C 3.0, improvements and future directions
6) Win on Thumb-1 code size with Machine Outlining

Session Type
Lightning Talks
Abstract/s
1) Overflowing with Strings: A newish dimension in DWARF size concerns - Recently larger programs, especially those making use of expression templates in libraries like Eigen and TensorFlow, have been exceeding the limits of even Split DWARF when it comes to string data. Let's explore the specific nature of those failures and some possible solutions involving more terse representations of complex template names in DWARF. 2) Automatic and Customizable Code Rewriting and Refactoring with Clang - Refactoring code for cleanliness, API changes, and new programming models is a common, yet time-consuming task for application developers. Many of the changes done while refactoring are simple and mechanical and can be easily automated. Other changes, however, still require input from a human programmer to ensure the desired result is achieved. This work describes a prototype tool built on top of Clang that will allow programmers to automate these more complex changes via a user-friendly, pure C++ framework. As a motivating example, we present an alternative, customizable implementation of hipify, which translates CUDA to HIP, using our framework. 3) LTO and JIT Support in LLVM OpenMP Target Offloading - For an OpenMP program with target offloading, current LLVM OpenMP compiler tool chain generates a device image ahead of time for each translation unit. Although we already introduced an OpenMP aware optimization, due to the limited information from one translation unit during compilation time, some optimization cannot be applied. Link time optimization (LTO) and just-in-time (JIT) compilation are the two commonly used techniques to deal with the limitation. This ongoing work enables LTO and JIT support for LLVM OpenMP target offloading. LLVM IR, instead of device image, is embedded into the fat object file, and the generation of device image is deferred to runtime. 4) Packaging LLVM Snapshots - This talk demonstrates my approach to build daily LLVM snapshot packages for Fedora using Github Actions, Python, package blueprints (spec files) and Copr as the build infrastructure. We’ll walk through various differences between a regular released version of LLVM and a snapshot release. 5) OpenCL support in clang status: OpenCL C 3.0, improvements and future directions - Recently there was a work regarding support of OpenCL C 3.0 in clang. This talk gives an overview of current status, improvements in OpenCL support and in clang in general and informs about future directions. 6) Win on Thumb-1 code size with Machine Outlining - The MachineOutliner is an LLVM pass that attempts to deduplicate long sequences of instructions by creating a new function out of those sequences and then replacing each code sequence with a call to the new function. Earlier this year, machine outlining was enabled for the ARM and Thumb-2 instructions sets. However, due to some limitations, devices that only supported Thumb-1 (and not Thumb-2) were explicitly disabled in the newly added support. In this talk, I will highlight the primitives Thumb-1 lacks which makes the MachineOutliner support more difficult, and I'll show how I was able to work around those to get the outliner enabled.