cuGraph C++ primitives: vertex/edge-centric building blocks for parallel graph computing
Seunghwa Kang, Chuck Hastings, Joe Eaton, Brad Rees · 2023
Software development of high-performance graph algorithms is difficult on modern parallel computers. To simplify this task, we have designed and implemented a collection of C++ graph primitives, basic building blocks, within cuGraph to assist graph analytics software developers on parallel computers, ranging from desktops to large clusters. This graph primitives API provides a vertex/edge-centric C++ Standard Template Library (STL)-like interface, allowing users to pick a primitive algorithm, and specify desired operations on vertices and edges and how to reduce the output of such operations through C++ functors. The API implementation is responsible for executing these functors on the underlying hardware. In this case, the graph primitives are implemented to run on NVIDIA GPU systems, from a single-GPU to multi-GPUs in a distributed cluster. RAPIDS cuGraph is NVIDIA’s graph analytics solution for data scientists and software integrators. Algorithms in cuGraph are either implemented using the cuGraph C++ primitives API or being migrated over to using the primitives API. The Louvain and PageRank algorithms have been tested on clusters with over 1000 GPUs.