Accelerating Sparse MTTKRP for Small Tensor Decomposition on GPU
Sasindu Wijeratne, Rajgopal Kannan, Viktor Prasanna
TL;DR
This paper tackles the bottleneck of sparse MTTKRP (spMTTKRP) in CPD for small tensors on GPUs by introducing a mode-specific tensor layout that stores multiple matricizations as separate tensor copies in GPU global memory, thereby improving data locality and eliminating inter-block communication overhead. It proposes an adaptive load-balancing scheme over GPU SMs, guided by the output-mode index counts and tensor sparsity, to achieve efficient workload distribution. The authors present a hypergraph-based tensor representation and a parallel algorithm that maps partitions to thread blocks, enabling mode-by-mode spMTTKRP with optimized local/global updates. Experimental results on an RTX 3090 show substantial geometric mean speedups (approximately 2.4×, 7.9×, and 8.9×) over state-of-the-art baselines, demonstrating the practical impact for small-tensor CPD in diverse domains. The work highlights how mode-specific data layouts plus adaptive scheduling can significantly reduce memory traffic and synchronization overhead in GPU-based tensor decompositions, with potential extensions to CPU and FPGA platforms.
Abstract
Sparse Matricized Tensor Times Khatri-Rao Product (spMTTKRP) is the bottleneck kernel of sparse tensor decomposition. In tensor decomposition, spMTTKRP is performed iteratively along all the modes of an input tensor. In this work, we propose a mode-specific tensor layout on GPU that uses multiple tensor copies, where each copy is optimized for a specific mode. The proposed tensor layout increases the data locality of external memory accesses and eliminates the intermediate values communicated between the GPU thread blocks and the GPU global memory. We also propose a tensor partitioning scheme to optimally distribute the total computations among GPU streaming multiprocessors based on the sparsity and the dimensions of the input tensor. Our approach achieves a geometric mean speedup of 2.4x, 7.9x, and 8.9x in total execution time compared with the state-of-the-art GPU baselines.
