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.
We present the design and optimization of a solver for efficient and high-throughput computation of the marginalized graph kernel on General Purpose GPUs. The graph kernel is computed using the conjugate gradient method 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 matrix blocks called 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. We exploit the sparsity of the graphs hierarchically by storing only non-empty tiles using a coordinate format and nonzero elements within each tile using bitmaps. We propose a new partition-based reordering algorithm for aggregating nonzero elements of the graphs into fewer but denser tiles to further exploit sparsity. We carry out extensive theoretical analyses on the graph tensor product primitives for tiles of various density and evaluate their performance on synthetic and real-world datasets. Our solver delivers three to four orders of magnitude speedup over existing CPU-based solvers such as GraKeL and GraphKernels . The capability of the solver enables kernel-based learning tasks at unprecedented scales.
A
and optimization
D
the
R
conjugate gradient
the conjugate gradient method
A
matrix blocks called
R
The
We exploit the
D
is exploited
R
of the graphs and non-zero
using a coordinate format and nonzero
R
a coordinate format and bitmaps, respectively. A
bitmaps. We propose a
R
is proposed for aggregating non-zero
for aggregating nonzero
R
in order to improve the efficiency of the sparse format. We carried
to further exploit sparsity. We carry
R
between
for
R
, and evaluated
and evaluate
R
implementation is able to deliver
solver delivers
A
such as GraKeL and GraphKernels
R
can enable
enables