Search papers, labs, and topics across Lattice.
This paper introduces a novel partitioning algorithm for sparse tensor algebra that provably load balances computation across parallel execution units, addressing the challenge of irregular and skewed data structures. The algorithm generalizes parallel merging to handle arbitrary numbers of operands and multi-dimensional hierarchical sparse data. Implemented within a sparse tensor algebra compilation framework, the generated parallel kernels achieve performance competitive with hand-optimized vendor libraries and outperform general-purpose strategies, demonstrating its effectiveness in automatically parallelizing sparse tensor computations.
Provably load-balanced parallelization of sparse tensor algebra is now possible, rivaling hand-tuned libraries and opening up performance gains for previously intractable sparse computations.
Sparse tensor algebra is challenging to efficiently parallelize due to the irregular, data-dependent, and potentially skewed structure of sparse computation. We propose the first partitioning algorithm that provably load balances the computation of any sparse tensor algebra expression across parallel execution units. Our algorithm generalizes parallel merging algorithms to any number of operands, and to multi-dimensional, hierarchical sparse data structures. We implement our algorithm within an existing sparse tensor algebra compilation framework to automatically generate parallel sparse tensor algebra kernels that target multi-core CPUs and GPUs. We show that our generated code is competitive with hand-implemented parallelization strategies used by vendor libraries like Intel MKL and NVIDIA cuSPARSE (geo-means of $0.73$--$3.4\times$) and \textsc{Taco} (geo-means of $1.0$--$2.4\times$), and significantly outperforms general-purpose strategies for sparse tensor expressions where specialized algorithms have not been developed (geo-means of $2.0$--$6.4\times$).