UniSparse: An Intermediate Language for General Sparse Format Customization
summary
UniSparse is an MLIR-based intermediate language and compiler that encodes sparse formats as a metadata tree plus a separate memory layout, implements primitives merge, trim and index map (plus reverse operators) to express and bidirectionally convert between formats, and provides decompose/convert passes and kernel lowering for CPU/GPU/FPGA/PIM. It encodes diagonal, hybrid, blocking and novel variants (e.g., CISR+), evaluates on Intel CPU, NVIDIA GPU, AMD Xilinx FPGA and simulated PIM, supports >70 GPU formats, runs 20-iteration label-propagation with a custom format that outperforms vanilla CSR despite some conversion overhead.
AI-written summary · about
chapters (15)
- 0:00UniSparse introduction
- 1:04Sparse formats overview
- 2:32Compression techniques
- 4:16Sparse programmability challenges
- 4:36UniSparse abstraction
- 5:58Mutation primitives
- 7:43Index maps for formats
- 9:09Automated format conversion
- 10:52MLIR implementation
- 11:57Format conversion performance
- 12:40End-to-end custom formats
- 13:22User-defined functions
- 14:48UniSparse features summary
- 15:52Q&A: Conversion efficiency
- 17:19Q&A: Sparse operations
related talks
28mFunctional Sparse Tensor Compilation
20mExploiting Sparsity and Redundancy
19mGeneralSparse: Bridging the Gap in SpMM for Pruned Large Language Model Inference..
20mVectorizing Sparse Coiteration for Two-finger Loop Structure (Extended Abstract)
11mExtending the Scope of the Array Abstraction beyond Sparsity
15mCompiling and Compressing Structured Tensors
25mFormat Abstraction for Sparse Tensor Algebra Compilers
30mGenerating High Performance Code for Irregular Data Structures using Dependent Types
