Search papers, labs, and topics across Lattice.
This paper introduces PRISM, a Processing-In-Memory (PIM) architecture for accelerating sparse Matricized Tensor Times Khatri-Rao Product (spMTTKRP), a key operation in tensor decomposition. PRISM leverages UPMEM PIM technology and heterogeneous CPU collaboration, optimizing partitioning strategies, number formats, and kernel implementations. Experiments demonstrate PRISM achieves up to 2.64x speedup over state-of-the-art CPU implementations, with significantly higher resource efficiency.
PIM-based acceleration can deliver 2.6x speedups for sparse tensor decomposition, but distributed memory limitations in current PIM architectures can still be a bottleneck.
Sparse tensors are the most used representation of sparse multidimensional data. Operations that decompose them, selecting their most important features while reducing their dimension, have become prevalent procedures in machine learning. One of the most used tensor decomposition algorithms is the Alternating Least Squares Canonical Polyadic Decomposition (CP-ALS), where the most time-consuming operation is the Sparse Matricized Tensor Times Khatri-Rao Product (spMT-TKRP). This operation is strongly memory-bound, making it hard to implement efficiently on general-purpose processors. This work proposes PRISM, the first approach to tackle this operation using Processing-In-Memory (PIM) technology. We extensively characterize different partitioning strategies, number formats, and kernel optimizations that efficiently adapt this operation to UPMEM PIM, which is further boosted by heterogeneous collaboration with the CPU. The experimental results show that the proposed PIM-based and heterogeneous approaches achieve up to 2.37 and 2.64 times speedup compared to state-of-the-art CPU implementations, respectively. However, the UPMEM distributed memory system can significantly hinder performance on certain workloads. Nonetheless, the efficiency of resource consumption for this approach, measured by peak performance fraction usage, is significantly higher than for both CPU and GPU.