Symbolic Numeric Programming in Julia
summary
Symbolics.jl traces numerical Julia code via multiple-dispatch to produce and regenerate code, claims removal of intermediate allocations and automatic multithreading, and demonstrates a 150x speedup on a 3D kernel by eliminating allocations and fusing loops. It computes sparse Jacobian/Hessian structure to reduce AD calls, provides O(1)-size representation for arrays and stencils, and exposes a unified interface with a e-graph based simplifier plus rule-based rewrites.
AI-written summary · about
chapters (15)
- 0:00Start
- 5:12How Symbolics Works
- 11:08Abstract Interpretation
- 13:47Optimizations
- 18:58Semi-Linear Form
- 20:11Compiling this to Julia
- 21:55Runtime Generated Functions
- 23:49Symbolic Arrays
- 25:45The Einstein Summation Notation
- 27:01Vector Transpose
- 27:32Rule System
- 29:18Matrix Chain Multiplication Rule
- 30:11Loop Vectorization
- 32:22Periodic Boundary Conditions
- 35:36Collaborators
related talks
32mhow compiler smarts can help improve the performance of numerical methods
02h 00mIntroduction to Julia
01h 06mJulia: Fast Performance, Distributed Computing & Multiple Dispatch
01h 27mIntroduction to Julia for Scientific Computing and Data Science
01h 07mJulia Tutorial
01h 37mTech Tutorial: Use Julia for your next scientific computing job!
30mProductivity and performance in one programming language - A tour of Julia
01h 04mSymbolic Calculus for High-performance Computing From Scratch Using C++23
