  Designing flexible graph kernels that can run well on various platforms is a
crucial research problem due to the frequent usage of graphs for modeling data
and recent architectural advances and variety. In this work, we propose a novel
graph processing framework, PGAbB (Parallel Graph Algorithms by Blocks), for
modern shared-memory heterogeneous platforms. Our framework implements a
block-based programming model. This allows a user to express a graph algorithm
using kernels that operate on subgraphs. PGAbB support graph computations that
fit in host DRAM but not in GPU device memory, and provides simple but
effective scheduling techniques to schedule computations to all available
resources in a heterogeneous architecture. We have demonstrated that one can
easily implement a diverse set of graph algorithms in our framework by
developing five algorithms. Our experimental results show that PGAbB
implementations achieve better or competitive performance compared to
hand-optimized implementations. Based on our experiments on five graph
algorithms and forty-four graphs, in the median, PGAbB achieves 1.6, 1.6, 5.7,
3.4, 4.5, and 2.4 times better performance than GAPBS, Galois, Ligra, LAGraph
Galois-GPU, and Gunrock graph processing systems, respectively.
