  Graph pattern mining (GPM) is an important application that identifies
structures from graphs. Despite the recent progress, the performance gap
between the state-of-the-art GPM systems and an efficient algorithm--pattern
decomposition--is still at least an order of magnitude. This paper clears the
fundamental obstacles of adopting pattern decomposition to a GPM system.
  First, the performance of pattern decomposition algorithms depends on how to
decompose the whole pattern into subpatterns. The original method performs
complexity analysis of algorithms for different choices, and selects the one
with the lowest complexity upper bound. Clearly, this approach is not feasible
for average or even expert users. To solve this problem, we develop a GPM
compiler with conventional and GPM-specific optimizations to generate
algorithms for different decomposition choices, which are evaluated based on an
accurate cost model. The executable of the GPM task is obtained from the
algorithm with the best performance. Second, we propose a novel
partial-embedding API that is sufficient to construct advanced GPM applications
while preserving pattern decomposition algorithm advantages. Compared to
state-of-the-art systems, our new GPM system, DwarvesGraph, developed based on
the ideas, reduces the execution time of GPM on large graphs and patterns from
days to a few hours with low programming effort.
