A High-Throughput Solver for Marginalized Graph Kernels on GPU
We present the design of a solver for the efficient and high-throughput computation of the marginalized graph kernel on General Purpose GPUs. The graph kernel is computed using conjugate gradient to solve a generalized Laplacian of the tensor product between a pair of graphs. To cope with the large gap between the instruction throughput and the memory bandwidth of the GPUs, our solver forms the graph tensor product on-the-fly without storing it in memory. This is achieved by using threads in a warp cooperatively to stream the adjacency and edge label matrices of individual graphs by small square tiles, which are then staged in registers and the shared memory for later reuse. Warps across a thread block can further share tiles via the shared memory to increase data reuse. The sparsity of the graphs is exploited hierarchically by storing only non-empty tiles of the graphs and non-zero elements within each tile using a coordinate format and bitmaps, respectively. A new partition-based reordering algorithm is proposed for aggregating non-zero elements of the graphs into fewer but denser tiles in order to improve the efficiency of the sparse format. We carried out extensive theoretical analyses on the graph tensor product primitives between tiles of various density, and evaluated their performance on synthetic and real-world datasets. Our implementation is able to deliver three to four orders of magnitude speedup over existing CPU-based solvers. The capability of the solver can enable kernel-based learning tasks at unprecedented scales.
READ FULL TEXT