Skip to content

Commit 358ec84

Browse files
2022-05 LLVM dev meeting updates (#9)
1 parent 9d272cf commit 358ec84

8 files changed

Lines changed: 472 additions & 0 deletions

File tree

content/devmtg/2022-05.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
title: "2022 Developers' Meeting"
3+
description: ""
4+
date: 2022-05-10T19:45:19+05:30
5+
toc: true
6+
tags: []
7+
draft: false
8+
---
9+
10+
{{< event_data "2022-05" >}}
11+
12+
## About
13+
14+
The LLVM Developers' Meeting is a bi-annual gathering of the entire LLVM Project community. The conference is organized by the LLVM Foundation and many volunteers within the LLVM community. Developers and users of LLVM, Clang, and related subprojects will enjoy attending interesting talks, impromptu discussions, and networking with the many members of our community. Whether you are a new to the LLVM project or a long time member, there is something for each attendee.
15+
16+
To see the agenda, speakers, and register, please visit the Event Site here: https://llvm.swoogo.com/2022eurollvm/
17+
18+
What can you can expect at an LLVM Developers' Meeting?
19+
20+
- **Technical Talks**
21+
22+
These 20-30 minute talks cover all topics from core infrastructure talks, to project's using LLVM's infrastructure. Attendees will take away technical information that could be pertinent to their project or general interest.
23+
24+
- **Tutorials**
25+
26+
Tutorials are 50-60 minute sessions that dive down deep into a technical topic. Expect in depth examples and explanations.
27+
28+
- **Lightning Talks**
29+
30+
These are fast 5 minute talks that give you a taste of a project or topic. Attendees will hear a wide range of topics and probably leave wanting to learn more.
31+
32+
- **Quick Talks**
33+
34+
Quick 10 minute talks that dive a bit deeper into a topic, but not as deep as a Technical Talk.
35+
36+
- **Student Technical Talks**
37+
38+
Graduate or Undergraduate students present their work using LLVM.
39+
40+
- **Panels**
41+
42+
Panel sessions are guided discussions about a specific topic. The panel consists of ~3 developers who discuss a topic through prepared questions from a moderator. The audience is also given the opportunity to ask questions of the panel.
43+
44+
What types of people attend?
45+
46+
- Active developers of projects in the LLVM Umbrella (LLVM core, Clang, LLDB, libc++, compiler_rt, flang, lld, MLIR, etc).
47+
- Anyone interested in using these as part of another project.
48+
- Students and Researchers
49+
- Compiler, programming language, and runtime enthusiasts.
50+
- Those interested in using compiler and toolchain technology in novel and interesting ways.
51+
52+
The LLVM Developers' Meeting strives to be the best conference to meet other LLVM developers and users.
53+
54+
Please visit the event site for all the information, call for papers, and more: [https://llvm.swoogo.com/2022eurollvm/](https://llvm.swoogo.com/2022eurollvm/)
55+
56+
For future announcements or questions: Please visit the LLVM Discourse forums. Most posts are in the Announcements or Community categories and tagged with usllvmdevmtg.
57+
58+
## Program
59+
60+
### Keynote
61+
62+
{{< event_talks
63+
"devmtg/2022-05/keynote"
64+
"keynote"
65+
>}}
66+
67+
### Tutorials
68+
69+
{{< event_talks
70+
"devmtg/2022-05/tutorials"
71+
"tutorials"
72+
>}}
73+
74+
### Technical Talks
75+
76+
{{< event_talks
77+
"devmtg/2022-05/technical_talks"
78+
"technical_talks"
79+
>}}
80+
81+
### Quick Talks
82+
83+
{{< event_talks
84+
"devmtg/2022-05/quick_talks"
85+
"quick_talks"
86+
>}}
87+
88+
89+
### Lightning Talks
90+
91+
{{< event_talks
92+
"devmtg/2022-05/lightning_talks"
93+
"lightning_talks"
94+
>}}
95+
96+
### Student Talks
97+
98+
{{< event_talks
99+
"devmtg/2022-05/student_technical_talks"
100+
"student_technical_talks"
101+
>}}
102+
103+
## Code of Conduct
104+
105+
The LLVM Foundation is dedicated to providing an inclusive and safe
106+
experience for everyone. We do not tolerate harassment of participants in any
107+
form. By registering for this event, we expect you to have read and agree to
108+
the [LLVM Code of Conduct](http://llvm.org/docs/CodeOfConduct.html).
109+
110+
## Contact
111+
112+
To contact the organizer, email [events@llvm.org](mailto:events@llvm.org).

data/devmtg/2022-05/keynote.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
keynote:
2+
- title: "MCA Daemon: Hybrid Throughput Analysis Beyond Basic Blocks"
3+
speaker: "Min-Yih Hsu, University of California, Irvine"
4+
video_url: "https://youtu.be/ZGEP7JEIKNo"
5+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-MCA-Deamon.pdf"
6+
description: |
7+
Estimating instruction-level throughput (for example, predicting the cycle counts)
8+
is critical for many applications that rely on tightly calculated and accurate timing
9+
bounds. In this talk, we will present a new throughput analysis tool, MCA Daemon (MCAD).
10+
It is built on top of LLVM MCA and combines the advantages of both static and dynamic
11+
throughput analyses, providing a powerful, fast, and easy-to-use tool that scales up with
12+
large-scale programs in the real world.
13+
14+
15+
- title: "Finding Missed Optimizations Through the Lens of Dead Code Elimination"
16+
speaker: "Theodoros Theodoridis, ETH Zurich"
17+
video_url: "https://youtu.be/jD0WDB5bFPo"
18+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-FindingMissedOptimizations.pdf"
19+
description: |
20+
Compilers are foundational software development tools and incorporate increasingly
21+
sophisticated optimizations. Due to their complexity, it is difficult to systematically
22+
identify opportunities for improving them. Indeed, the automatic discovery of missed
23+
optimizations has been an important and significant challenge. We tackle this challenge by
24+
introducing a novel, effective approach that, in a simple and general manner,
25+
automatically identifies a wide range of missed optimizations. Our core insight is to
26+
leverage dead code elimination (DCE) to both analyze how well compilers optimize code and
27+
identify missed optimizations: (1) insert "optimization markers'' in the basic blocks of a
28+
given program, (2) compute the program's live/dead basic blocks using the "optimization
29+
markers'', and (3) identify missed optimizations from how well compilers eliminate dead
30+
blocks. We have implemented and open-sourced our approach in our tool DEAD. DEAD can
31+
automatically find missed optimizations and regressions and generate minimal test cases.
32+
We reported over a hundred such bugs in LLVM and GCC most of which have already been
33+
confirmed or fixed, demonstrating our work's strong practical utility.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
lightning_talks:
2+
- title: "LLVM office hours: addressing LLVM engagement and contribution barriers"
3+
speaker: "Kristof Beyls, Arm"
4+
video_url: "https://youtu.be/xp7yQTIyxkw"
5+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-OfficeHours.pdf"
6+
description: |
7+
As part of registering for the 2021 LLVM dev meeting, participants were asked to answer a
8+
few questions about how the LLVM community could increase engagement and contributions.
9+
Out of the 450 people replying, the top 3 issues mentioned were "sometimes people aren't
10+
receiving detailed enough feedback on their proposals"; "people are worried to come across
11+
as an idiot when asking a question on the mailing list/on record"; "People cannot find
12+
where to start; where to find documentation; etc." These were discussed in the community.o
13+
workshop at the 2021 LLVM dev meeting, and a summary of that discussion was presented by
14+
Adelina Chalmers as a keynote session, see 2021 LLVM Dev Mtg "Deconstructing the Myth:
15+
Only real coders contribute to LLVM!? - Takeaways" One of the solutions suggested to help
16+
address those top identified barriers from the majority of participants is introducing the
17+
concept of "office hours". We have taken some small steps since then to make "office
18+
hours" a reality. In this lightning talk, I will talk about what issues "office hours" is
19+
aiming to address; how both newbies and experienced contributors can get a lot of value
20+
out of them; and where we are in implementing this concept and how you can help for them
21+
to be as effective as possible.
22+
23+
24+
- title: "llsoftsecbook: an open source book on low-level software security for compiler developers"
25+
speaker: "Kristof Beyls, Arm"
26+
video_url: "https://youtu.be/GeGvkrkHrh8"
27+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-llsoftsecbook.pdf"
28+
description: |
29+
Many compiler engineers work on security hardening features and many of them feel their
30+
work would benefit from a better understanding of attacks and hardening techniques.
31+
Therefore, we recently started an open source book titled "Low Level Software Security for
32+
Compiler developers" at https://github.com/llsoftsec/llsoftsecbook/. It aims to help
33+
compiler developers improve their knowledge about security hardening; ultimately leading
34+
to more innovation and better implementations of security features.
35+
36+
- title: "Exploring Clang/LLVM optimization on programming horror"
37+
speaker: "Matthieu Dubet"
38+
video_url: "https://youtu.be/21qjU6ml7vk"
39+
slides_url: ""
40+
description: |
41+
Exploring how Clang/LLVM manages to transform a linear time complexity algorithm to
42+
a constant time one.
43+
44+
- title: "Flang update"
45+
speaker: "Kiran Chandramohan, Arm"
46+
video_url: "https://youtu.be/FoIjafZGDdE"
47+
slides_url: ""
48+
description: |
49+
F18/Flang was accepted as the Fortran frontend of LLVM in 2019. The project joined the
50+
monorepo in 2020. Development of a large chunk of code dealing with the lowering of the
51+
parse-tree to FIR (Fortran IR) continued in a fork of the llvm-project. In the last year,
52+
a significant effort went in to upstreaming this fork. Most of this code is upstreamed and
53+
all development has shifted to the llvm-project monorepo. Much development effort has also
54+
gone into adding a runtime and lowering for Fortran 95. In parallel, great progress has
55+
been achieved on adding a driver, support for OpenMP 1.1+ and OpenACC. In this talk, I
56+
will summarize the developmental activities for the last year, the current status and
57+
future work.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
quick_talks:
2+
- title: "How to Make Hardware with Maths: An Introduction to CIRCT's Scheduling Infrastructure"
3+
speaker: "Julian Oppermann, Technical University of Darmstadt"
4+
video_url: "https://youtu.be/tctEk7O5DU0"
5+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-HowtoMakeHardwarewithMaths.pdf"
6+
description: |
7+
The LLVM incubator project CIRCT aims to provide an MLIR-based foundation for the
8+
next generation of modular hardware design tools. Scheduling is a common concern in this
9+
domain, for example in high-level synthesis (HLS) flows that build tailored, synchronous
10+
microarchitectures from untimed dataflow graphs. This talk gives a gentle introduction to
11+
CIRCT's scheduling abstractions and presents the currently available
12+
infrastructure—including extensible problem models, ready-to-use scheduler
13+
implementations and support for external solvers. We discuss current users of the
14+
infrastructure and outline future plans for this recent addition to the project.
15+
16+
- title: "Improving debug locations for variables in memory"
17+
speaker: "Orlando Cazalet-Hyams, SN Systems (Sony Interactive Entertainment)"
18+
video_url: "https://youtu.be/wSmveKsWSSY"
19+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-ImprovingDebugLocations-for-Variables-in-Memory.pdf"
20+
description: |
21+
LLVM generates suboptimal debug variable locations for variables in memory in
22+
optimised code. Due to a lack of information in the compiler, it uses a heuristic to
23+
decide whether to issue locations with low availability or locations that may be
24+
incorrect. We've been prototyping a new debug intrinsic which enables LLVM to make
25+
smarter decisions for these variables by connecting stores and source assignment markers.
26+
In this talk I will briefly outline the problem with the existing system, how the new
27+
system works - including how existing passes are affected - and discuss the accuracy and
28+
coverage improvements we've found so far.
29+
30+
- title: "LLVM-MOS 6502 Backend: Having a Blast in the Past"
31+
speaker: "Daniel Thornburgh, Google"
32+
video_url: "https://youtu.be/2lW3WHPtmKo"
33+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-LLVM-MOS-6502Backend.pdf"
34+
description: |
35+
LLVM-MOS is an out-of-tree Clang and LLVM backend for the MOS Technology 6502, the
36+
CPU behind the NES, Atari 2600/8-bit, BBC Micro, Commodore 64, and many more beloved
37+
devices. LLVM-MOS converts freestanding C/C++ into fairly efficient 6502 machine code,
38+
despite the 6502’s limited and heterogeneous registers, lack of stack-relative
39+
addressing modes, and 256-byte stack. This talk will explore the grab-bag of tricks that
40+
hoodwinked LLVM into supporting an almost 50-year-old architecture: "imaginary" registers,
41+
instruction set regularization, whole-program static stack allocation, and, of course,
42+
lots and lots of pseudo-instructions.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
student_technical_talks:
2+
- title: "Using link-time call graph embedding to streamline compiler-assisted instrumentation selection"
3+
speaker: "Sebastian Kreutzer, TU Darmstadt"
4+
video_url: "https://youtu.be/I5DaDeF7cmI"
5+
slides_url: ""
6+
description: |
7+
CaPI is an instrumentation tool that combines static analysis with user-direction to
8+
create low-overhead configurations for accurate performance measurements of scientific
9+
applications. We present a prototype implementation of an improved instrumentation
10+
toolchain for CaPI that generates a whole-program call graph at link-time and embeds it
11+
into the binary. We combine this approach with a dynamic instrumentation method based on
12+
XRay.
13+
14+
- title: "Automated Batching and Differentiation of Scalar Code in Enzyme"
15+
speaker: "Tim Gymnich, Technical University of Munich"
16+
video_url: "https://youtu.be/edvaLAL5RqU"
17+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-AutomatedBatchingandDifferentiationofScalarCodeinEnzyme.pdf"
18+
description: |
19+
Derivatives are the key to many important problems in computing, such as machine
20+
learning, and optimization. Building on the Enzyme compiler plugin for automatic
21+
differentiation, we add forward mode automatic differentiation, batching and the emission
22+
of vectorization-ready IR for arbitrary scalar code to unlock significant performance
23+
boosts.
24+
25+
- title: "Extending Sulong (an LLVM bitcode runtime) for cross-language interoperability between C++/Swift and Java, JavaScript or Python"
26+
speaker: "Christoph Pichler, Johannes Kepler University, Linz"
27+
video_url: "https://youtu.be/Z0imCJmfMAk"
28+
slides_url: "https://llvm.org/devmtg/2022-05/slides/2022EuroLLVM-ExtendingSulong.pdf"
29+
description: |
30+
Sulong is an execution engine for LLVM bitcode and is part of GraalVM, a polyglot
31+
virtual machine that can execute programs written in multiple programming languages.
32+
Besides advanced tooling (e.g., debugging, monitoring and profiling), GraalVM supports
33+
cross-language interoperability as well, which includes languages that can be compiled to
34+
LLVM bitcode, such as Swift and C++. Although Sulong runs LLVM bitcode within GraalVM, the
35+
implemented interoperability concept also takes the corresponding source language
36+
(C++/Swift) semantics into account (e.g., where to apply dynamic binding). In this talk,
37+
we will show that Swift/C++ code can be used to treat objects from different languages the
38+
same way as Swift/C++ objects, and vice versa. Moreover, we will demonstrate how to use
39+
object-oriented concepts (such as interfaces and information hiding) across those
40+
languages.

0 commit comments

Comments
 (0)