【发布时间】:2018-06-11 07:20:32
【问题描述】:
最近我阅读了Scalability! But at what cost?的论文。在本文中,作者以图计算为例来衡量它们在单线程机器上的性能,并与一些分布式框架上的性能进行比较。
在第 2 节中,作者指出,图计算代表了最简单的数据并行计算类别之一,它不是简单并行化的。谁能告诉我图形计算并行化的主要障碍是什么?
【问题讨论】:
标签: graph parallel-processing distributed-computing
最近我阅读了Scalability! But at what cost?的论文。在本文中,作者以图计算为例来衡量它们在单线程机器上的性能,并与一些分布式框架上的性能进行比较。
在第 2 节中,作者指出,图计算代表了最简单的数据并行计算类别之一,它不是简单并行化的。谁能告诉我图形计算并行化的主要障碍是什么?
【问题讨论】:
标签: graph parallel-processing distributed-computing
主要障碍是图操作的交换性和关联性。这两个属性决定了一个算法是否可以简单地并行化。在您链接的页面中,作者声明如下:
更新是可交换的和关联的, 并因此承认可扩展的实现 [7]。
实际上,[7] 中被引用的论文是一篇博士论文,对此进行了很好的解释:
本论文方法的核心是这个可扩展的交换规则:在多个操作交换的任何情况下——这意味着无法使用接口区分它们的执行顺序——它们有一个在这些操作期间没有冲突的实现——意味着没有核心写入由另一个核心读取或写入的高速缓存行。 根据经验,无冲突操作可以扩展,因此这种实施可以扩展。或者,更简洁地说,每当接口操作通勤时,它们都可以以可扩展的方式实现。这条规则很直观:当操作通勤时,它们的结果(返回值和 对系统状态的影响)与顺序无关。因此,交换体之间的通信 操作是不必要的,消除它会产生无冲突的实现。在现代 共享内存多核,无冲突操作可以完全从每核缓存执行, 因此无冲突实现的性能将与 核心。
例如cartesian graph product 是一个可交换和关联的运算,结果顶点可以按任意顺序计算,在这种情况下使并行化变得容易。然而,大多数图形操作缺少这些属性中的一个或两个。
【讨论】: