  There is growing interest in graph pattern mining (GPM) problems such as
motif counting. GPM systems have been developed to provide unified interfaces
for programming algorithms for these problems and for running them on parallel
systems. However, existing systems may take hours to mine even simple patterns
in moderate-sized graphs, which significantly limits their real-world
usability.
  We present Pangolin, a high-performance and flexible in-memory GPM framework
targeting shared-memory CPUs and GPUs. Pangolin is the first GPM system that
provides high-level abstractions for GPU processing. It provides a simple
programming interface based on the extend-reduce-filter model, which enables
users to specify application-specific knowledge for search space pruning and
isomorphism test elimination. We describe novel optimizations that exploit
locality, reduce memory consumption, and mitigate the overheads of dynamic
memory allocation and synchronization.
  Evaluation on a 28-core CPU demonstrates that Pangolin outperforms existing
GPM frameworks Arabesque, RStream, and Fractal by 49x, 88x, and 80x on average,
respectively. Acceleration on a V100 GPU further improves performance of
Pangolin by 15x on average. Compared to state-of-the-art hand-optimized GPM
applications, Pangolin provides competitive performance with less programming
effort.
