【问题标题】:Why graph processing is difficult to be distributed?为什么图处理难以分布式?
【发布时间】:2018-06-11 07:20:32
【问题描述】:

最近我阅读了Scalability! But at what cost?的论文。在本文中,作者以图计算为例来衡量它们在单线程机器上的性能,并与一些分布式框架上的性能进行比较。

在第 2 节中,作者指出,图计算代表了最简单的数据并行计算类别之一,它不是简单并行化的。谁能告诉我图形计算并行化的主要障碍是什么?

【问题讨论】:

    标签: graph parallel-processing distributed-computing


    【解决方案1】:

    主要障碍是图操作的交换性和关联性。这两个属性决定了一个算法是否可以简单地并行化。在您链接的页面中,作者声明如下:

    更新是可交换的和关联的, 并因此承认可扩展的实现 [7]。

    实际上,[7] 中被引用的论文是一篇博士论文,对此进行了很好的解释:

    本论文方法的核心是这个可扩展的交换规则:在多个操作交换的任何情况下——这意味着无法使用接口区分它们的执行顺序——它们有一个在这些操作期间没有冲突的实现——意味着没有核心写入由另一个核心读取或写入的高速缓存行。 根据经验,无冲突操作可以扩展,因此这种实施可以扩展。或者,更简洁地说,每当接口操作通勤时,它们都可以以可扩展的方式实现。这条规则很直观:当操作通勤时,它们的结果(返回值和 对系统状态的影响)与顺序无关。因此,交换体之间的通信 操作是不必要的,消除它会产生无冲突的实现。在现代 共享内存多核,无冲突操作可以完全从每核缓存执行, 因此无冲突实现的性能将与 核心。

    例如cartesian graph product 是一个可交换和关联的运算,结果顶点可以按任意顺序计算,在这种情况下使并行化变得容易。然而,大多数图形操作缺少这些属性中的一个或两个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      相关资源
      最近更新 更多