Immutable Arrays Help Mutating Arrays More Efficiently
summary
Claim: keeping arrays immutable lets the compiler reshape and specialize high-level array code into very efficient mutable implementations. Uses rank polymorphism and tensor comprehensions to encode tiling, blocking and parallel scans by changing array shapes rather than memory calls. Runtime uses lightweight reference counting to perform destructive updates when safe, falling back to a copy-on-write first iteration. Prototype language (Signal Assignment C and related tooling) achieves tiled, multi‑threaded performance comparable to MKL and targets CPUs, GPUs and MPI without changing source.
AI-written summary · about
chapters (10)
- 0:00Immutability and performance
- 3:11Language design with immutable arrays
- 11:26Productivity with rank polymorphism
- 16:01Concurrency engineering with scans
- 21:03Blocking algorithms for cache efficiency
- 24:15Mutable arrays complicate code
- 25:20Compiler optimizations with immutability
- 26:43Parallelism in tensor comprehensions
- 27:25Destructive updates with reference counting
- 28:50Conclusion
related talks
43muarray - Efficient and Generic Array Computation
02h 50mFunctional Array Funhouse Intensive - Part 3 of 5
38mA Ray of Hope: Array Programming for the 21st Century
31mStructuring Arrays with Algebraic Shapes
58mFunctional Array Funhouse Intensive - Part 2 of 5
01h 00mThe Shape of Things to Come
15mCompilation of Sparse Array Programming Models
01h 02mThe Shapes of Multi-Dimensional Arrays
