  We implement exact triangle counting in graphs on the GPU using three
different methodologies: subgraph matching to a triangle pattern; programmable
graph analytics, with a set-intersection approach; and a matrix formulation
based on sparse matrix-matrix multiplies. All three deliver best-of-class
performance over CPU implementations and over comparable GPU implementations,
with the graph-analytic approach achieving the best performance due to its
ability to exploit efficient filtering steps to remove unnecessary work and its
high-performance set-intersection core.
