Weld: An Optimizing Runtime for High Performance Data
summary
Weld builds a JIT runtime that stitches IR snippets from different libraries, JIT-compiles with LLVM (and partial PTX GPU support), and optimizes across calls to eliminate data movement and fuse loops. It exposes an explicitly parallel IR and declarative builders for mutable results, is implemented in ~40k Rust lines, and needs ~500 lines to integrate a library. Results include up to 180x speedup on 12 threads, ~30x vs hand C in some cases, 3.5x on TPC-H, and 9x when fusing NumPy+TensorFlow stages.
AI-written summary · about
chapters (14)
- 0:00Intro
- 2:41Weld: a common runtime for data libraries
- 4:10Weld can enable order-of-magnitude speedups
- 6:07Runtime API uses lazy evaluation
- 7:16Without Weld
- 8:15Weld IR: Expressing Computations
- 9:20Weld IR: Internals
- 12:39Optimizer Goals
- 17:47Adaptive Optimizations
- 19:38Implementation
- 20:29Integration Effort
- 23:43Weld Accelerates Multi-Library Workflows
- 24:59Incremental Integration
- 27:08Conclusion
related talks
42mComposable Parallel Processing in Apache Spark and Weld
01h 04mJust-in-Time Compilation: The Next Big Thing?
30mAn Incremental Approach to JIT Construction
42mDeveloping the Wolfram Language Compiler
26m“Easy::Jit: A Just-in-Time compilation library for C++”
01h 01mFaster Compile Times and Better Performance: Bringing Just-in-Time Compilation to C++
16mIntrepydd: Performance, Productivity, and Portability for Data Science Application Kernels
22mJulia - Dynamism and Performance Reconciled by Design
