A Tour of LLVM, a Modern and Open Source HPC Compiler Framework
Performance Analysis and Optimization
Programming Models & Languages
Scientific Software Development
System Software & Runtime Systems
TimeSunday, June 16th2pm - 6pm
DescriptionLLVM, a modern, industry-backed, open source compiler framework is well-known in the compiler research community, as a back-end for emerging program languages, and for software tooling tasks. While efforts like the exascale initiative, lead by various research facilities and HPC companies, are continuously improving the LLVM codebase and language front-ends, e.g., Clang and Flang, to support HPC workloads, LLVM is still underutilized in the HPC community. This tutorial we will augment the development efforts through community outreach and hands-on interactions for novice and experienced users interested in topics like OpenMP, OpenACC, modeling, Vectorization, and Performance Analysis.
In this tutorial, we will introduce the LLVM framework, including the front-ends that support HPC-related languages, e.g. OpenMP, OpenACC, and Fortran. We will discuss HPC related optimization capabilities with a focus on vectorized and parallelized programs. Additionally, we show how the LLVM framework in combination with the TAU Performance System allows accurate performance analysis of parallel HPC applications. Each tutorial part will allow for hands-on participation and encourage questions from the audience.
Content Level 45% beginner, 40% intermediate, 15% advanced
Target AudienceWhile we will ensure any enthusiastic participant will learn and benefit from the tutorial, we believe it is best suited for researchers and HPC application developers who regularly deal with
- compilers for low-level programming languages (C/C++, Fortran, OpenMP, OpenACC, …),
- acceleration techniques, and
- performance profiling.
PrerequisitesBasic experience with compilers and related tools are required. For advanced parts, further (parallel) programming language and compiler knowledge will be beneficial but not strictly necessary.