Skip to main content
QUICK REVIEW

[论文解读] Parallel Triangles Counting Using Pipelining

Julián Aráoz, Cristina Zoltán|arXiv (Cornell University)|Oct 12, 2015
Graph Theory and Algorithms参考文献 15被引用 3
一句话总结

本文提出了一种流水线化、架构无关的并行算法,用于在主内存无法容纳的大规模图中进行三角形计数,采用 NiMo —— 一种图形化、隐式纯函数式数据流编程语言。通过基于邻居集合大小动态调度处理器,并利用流式流水线避免高复制,该方法在不产生 MapReduce 通信开销的前提下实现了高效、可扩展的三角形计数,即使在单处理器上也能保持正确性。

ABSTRACT

The generalized method to have a parallel solution to a computational problem, is to find a way to use Divide & Conquer paradigm in order to have processors acting on its own data and therefore all can be scheduled in parallel. MapReduce is an example of this approach: Input data is transformed by the mappers, in order to feed the reducers that can run in parallel. In general this schema gives efficient problem solutions, but it stops being true when the replication factor grows. We present another program schema that is useful for describing problem solutions, that can exploit dynamic pipeline parallelism without having to deal with replica- tion factors. We present the schema in an example: counting triangles in graphs, in particular when the graph do not fit in memory. We describe the solution in NiMo, a graphical programming language that implements the implicitly functional parallel data ow model of computation. The solution obtained using NiMo, is architecture agnostic and can be deployed in any parallel/distributed architecture adapting dynamically the processor usage to input characteristics.

研究动机与目标

  • 解决基于 MapReduce 的三角形计数在高复制因子的大规模图中面临的可扩展性限制。
  • 设计一种并行算法,通过利用流式处理与流水线技术,高效处理无法装入内存的图。
  • 基于每个节点的邻居集合大小,在处理器之间实现动态负载均衡,避免静态划分。
  • 开发一种在单处理器上正确且可在分布式或多核架构中高度并行化的解决方案。
  • 使用 NiMo 的隐式纯函数式数据流模型,实现架构无关的实现,支持在多种并行系统上部署。

提出的方法

  • 该算法采用流水线化数据流模型,每个处理器作为负责一个节点的过滤器,处理传入的边并维护相邻节点的集合。
  • 采用动态调度策略,仅当更高优先级的邻居未抢占时,才将每个节点指定为“负责”节点,从而减少冗余计算。
  • 流水线分为两个阶段:第一阶段收集每个负责节点的相邻边;第二阶段检查是否存在闭合边以形成三角形,结果在各过滤器间聚合。
  • 该方法用流式、消息传递的流水线替代 MapReduce 的基于哈希的洗牌,最大限度减少数据复制与通信开销。
  • 实现中使用 NiMo 的进程抽象,将过滤器建模为有状态进程,根据输入量和数据到达模式自适应调整行为。
  • 该算法通过支持可重试的进程实现容错能力,并可通过使用多重集(multisets)而非集合来扩展支持多重图,实现对重复三角形的多重性感知闭合边检查。

实验结果

研究问题

  • RQ1如何在无法装入主内存的大规模图中高效并行化三角形计数?
  • RQ2流水线化数据流模型在通信开销与负载均衡方面是否优于传统的基于 MapReduce 的方法?
  • RQ3在缺乏图结构先验知识或静态划分的情况下,如何在三角形计数中实现动态负载均衡?
  • RQ4像 NiMo 这类函数式、架构无关的编程模型,在表达可扩展且正确的图问题并行算法方面,其能力边界如何?
  • RQ5同一算法是否能在单处理器与高度并行执行环境中均保持正确性与高效性?

主要发现

  • 所提出的流水线化算法通过基于责任的动态节点分配机制,避免了 MapReduce 的高复制因子,显著减少了中间数据量。
  • 该方法通过确保每个三角形仅被计数一次,并将每个三角形的贡献分配给单一负责节点,实现了正确的三角形计数。
  • 该算法在 BSP 模型下表现出类似波前的行为,且无需屏障,从而实现了高效的同步与负载均衡。
  • 即使在单处理器上执行,该解决方案仍保持正确性,证明了其在不同执行规模下的鲁棒性与正确性。
  • 基于 NiMo 的实现具有架构无关性,可自动适应输入特征,支持在多种并行与分布式系统上部署。
  • 通过将集合替换为多重集,该方法可扩展支持多重图,实现对重复三角形的多重性感知闭合边检查。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。