Counting triangles in a graph and incident to each vertex is a fundamental and frequently considered task of graph analysis. We consider how to efficiently do this for huge graphs using massively parallel distributed-memory machines. Unsurprisingly, the main issue is to reduce communication between processors. We achieve this by counting locally whenever possible and reducing the amount of information that needs to be sent in order to handle (possible) nonlocal triangles. We also achieve linear memory requirements despite superlinear communication volume by introducing a new asynchronous sparse-all-to-all operation. Furthermore, we dramatically reduce startup overheads by allowing this communication to use indirect routing. Our algorithms scale (at least) up to 32 768 cores and are up to 18 times faster than the previous state of the art.
翻译:在图论中,统计图中三角形数量及每个顶点参与的三角形数是一项基础且频繁涉及的分析任务。我们研究了如何利用大规模并行分布式内存计算机高效处理超大规模图中的这一任务。毫不意外,核心问题在于减少处理器间的通信开销。我们通过尽可能进行本地计数,并减少处理(可能存在的)非本地三角形所需传输的信息量来实现这一目标。此外,尽管通信量呈超线性增长,但我们引入了一种新的异步稀疏全交换操作,使得内存需求仍保持线性。同时,通过允许通信采用间接路由,我们大幅降低了启动开销。我们的算法可扩展至(至少)32,768个核心,且运行速度比此前最先进方法快18倍。