Graph algorithms are challenging to implement due to their varying topology and irregular access patterns. Real-world graphs are dynamic in nature and routinely undergo edge and vertex additions, as well as, deletions. Typical examples of dynamic graphs are social networks, collaboration networks, and road networks. Applying static algorithms repeatedly on dynamic graphs is inefficient. Unfortunately, we know little about how to efficiently process dynamic graphs on massively parallel architectures such as GPUs. Existing approaches to represent and process dynamic graphs are either not general or inefficient. In this work, we propose a library-based framework for dynamic graph algorithms that proposes a GPU-tailored graph representation and exploits the warp-cooperative execution model. The library, named Meerkat, builds upon a recently proposed dynamic graph representation on GPUs. This representation exploits a hashtable-based mechanism to store a vertex's neighborhood. Meerkat also enables fast iteration through a group of vertices, such as the whole set of vertices or the neighbors of a vertex. Based on the efficient iterative patterns encoded in Meerkat, we implement dynamic versions of the popular graph algorithms such as breadth-first search, single-source shortest paths, triangle counting, weakly connected components, and PageRank. Compared to the state-of-the-art dynamic graph analytics framework Hornet, Meerkat is $12.6\times$, $12.94\times$, and $6.1\times$ faster, for query, insert, and delete operations, respectively. Using a variety of real-world graphs, we observe that Meerkat significantly improves the efficiency of the underlying dynamic graph algorithm. Meerkat performs $1.17\times$ for BFS, $1.32\times$ for SSSP, $1.74\times$ for PageRank, and $6.08\times$ for WCC, better than Hornet on average.
翻译:图算法因其拓扑结构多变和访问模式不规则而难以实现。现实世界中的图具有动态特性,通常会经历边与顶点的增删操作,社交网络、协作网络和道路网络是动态图的典型例子。在动态图上重复应用静态算法效率低下。然而,我们对于如何在GPU等大规模并行架构上高效处理动态图知之甚少。现有表示和处理动态图的方法要么缺乏通用性,要么效率低下。本文提出一个基于库的动态图算法框架,该框架采用针对GPU优化的图表示方法,并利用线程束协同执行模型。该库名为Meerkat,基于近期提出的GPU动态图表示方法构建,该方法利用基于哈希表的机制存储顶点的邻域。Meerkat还能实现对顶点组(如顶点全集或某顶点的邻居)的快速迭代。基于Meerkat编码的高效迭代模式,我们实现了广度优先搜索、单源最短路径、三角形计数、弱连通分量和PageRank等常见图算法的动态版本。与最先进的动态图分析框架Hornet相比,Meerkat在查询、插入和删除操作上分别快12.6倍、12.94倍和6.1倍。通过多种真实世界图的测试,我们发现Meerkat显著提升了底层动态图算法的效率。Meerkat在BFS上平均快1.17倍,SSSP上快1.32倍,PageRank上快1.74倍,WCC上快6.08倍,均优于Hornet。