Speaker: Kaushik Kulkarni
Title: Transforming (not just) DG-FEM Array Expressions (not just) on GPUs
Abstract: While domain-specific languages for finite-element-based PDE solvers have enjoyed considerable success, composing them with supporting computations (e.g. chemistry, neural networks, non-variational discretization schemes) has proved challenging.
We demonstrate a generic array package with NumPy-like semantics that can represent and transform the action of complex discontinuous Galerkin (DG) FEM operators for near-roofline performance while straightforwardly expressing non-FEM computations. Our array package (“pytato”) allows code generation into an imperative, scalar, polyhedrally-based Intermediate Representation (IR), based on our “Loopy” toolkit for loop transformations. We use this compiler toolchain to implement a kernel fusion algorithm for DG-FEM array expression graphs that achieves 40-50% roofline performance for a suite of PDEs.
We end with a discussion on how much domain-specific handholding is unavoidable without comprises in application performance.
Bio: Kaushik Kulkarni is a CS PhD student advised by Prof. Andreas Kloeckner. The main focus of his research is to design abstractions for scientific computing codes to have a close-to-math representation while delivering close-to-roofline performance.
Speaker: Abdul Rafae Noor
Title: TRIMMER: An Automated System for Configuration-based Software Debloating
Abstract: Software bloat has negative implications for security, reliability, and performance. To counter bloat, we propose TRIMMER, a static analysis-based system for pruning unused functionality. TRIMMER removes code that is unused with respect to user-provided command-line arguments and application-specific configuration files. TRIMMER uses concrete memory tracking and a custom inter-procedural constant propagation analysis that facilitates dead code elimination. Our system supports both context-sensitive and context-insensitive constant propagation. We show that context-sensitive constant propagation is important for effective software pruning in most applications. We introduce sparse constant propagation that performs constant propagation only for configuration-hosting variables and show that it performs better (higher code size reductions) compared to constant propagation for all program variables. Overall, our results show that TRIMMER reduces binary sizes for real-world programs with reasonable analysis times. Across 20 evaluated programs, we observe a mean binary size reduction of 22.7% and a maximum reduction of 62.7%. For 5 programs, we observe performance speedups ranging from 5% to 53%. Moreover, we show that winnowing software applications can reduce the program attack surface by removing code that contains exploitable vulnerabilities. We find that debloating using TRIMMER removes CVEs in 4 applications.
Bio: Abdul Rafae Noor is a 2nd year PhD. Student at the UIUC LLVM Group advised by Prof. Vikram Adve. He is interested in compilers for Heterogeneous Parallel Programs and developing re-targetable compiler infrastructures for tensor processing by exploring the combination of program synthesis with learning-based techniques.