Vectorizing Sparse Coiteration for Two-finger Loop Structure (Extended Abstract)
summary
Proposes an MLIR optimization pass that turns compressed-hierarchy sparse co-iteration SCF loops into a dual-path execution: a predicated, vectorized fast lane guarded by runtime bounds checks plus a scalar slow lane epilogue. Implements on the sparse tensor dialect and lowers through the Vector dialect to LLVM, evaluated on an Intel Xeon Gold (Sapphire Rapids) with AVX-512. Reports a peak 277x microbenchmark speedup, a 2.39x geometric speedup across kernels (SpGEMM, SpMV, MTTKRP), and finds vector width four as the best tuning point for many sparsities.
AI-written summary · about
chapters (16)
- 0:00Sparse tensor coiteration intro
- 1:00Sparse matrix multiply basics
- 2:26Dense vs sparse multiply
- 3:30Iteration graph for sparse tensors
- 4:37Two-finger loop structure
- 6:25Vectorizing sparse loops challenges
- 7:08Manual vectorization strategy
- 8:56Vectorized data loading and masking
- 10:26Pointer advancement vectorized
- 12:09MLIR sparse tensor dialect
- 13:55Vector and scalar stages config
- 14:37Performance on Intel Xeon Gold
- 15:41Vector width and sparsity ablation
- 16:43Synthetic and real-world results
- 17:49Outerloop parallelism scalability
- 18:11Summary and future
related talks
19mCompiler Support for Sparse Tensor Convolutions
28mFunctional Sparse Tensor Compilation
19mOptimizations and abstractions for sparse machine learning
15mCompiling and Compressing Structured Tensors
24mMoving to RISC-V Vector: A Practical Journey of AI Operator Optimization
19mAggregation Optimization for SIMD Everywhere from ARM Neon to RISC-V Vector and Crypto Extensions
33mImproving the Effectiveness and Generality of GCC Auto-Vectorization
18mLoop Fusion in Matrix Multiplications with Sparse Dependence
