最近我读了论文Scalability! But at what cost?。在本文中,作者以图形计算为例,测量它们在单个线程机器上的性能,而不是某些分布式框架上的性能。
在第2部分中,作者指出图形计算代表了最简单并行化的数据并行计算类别之一。谁能告诉我图形计算并行化的主要障碍是什么?
答案 0 :(得分:0)
主要障碍是图形操作的可交换和关联属性。这两个属性确定算法是否可以简单地并行化。在您链接的页面中,作者说明了以下内容:
更新是可交换和关联的, 并因此承认可扩展的实施[7]。
实际上[7]引用的论文是博士论文,它解释得很好:
本论文的核心是这种可扩展的交换规则:在几种操作通勤的任何情况下 - 意味着无法使用接口区分其执行顺序 - 它们具有在这些操作期间无冲突的实现 - 意味着没有核心写入由另一个核心读取或写入的缓存行。 根据经验,无冲突的操作规模,因此这种实施可扩展。或者,更简洁地说,每当接口操作通勤时,它们都可以以可扩展的方式实现。这条规则具有直观意义:当操作通勤时,它们的结果(返回值和值) 对系统状态的影响)与顺序无关。因此,交换之间的沟通 操作是不必要的,并且消除它会产生无冲突的实现。在现代 共享内存多核,无冲突操作可以完全从每个核心的缓存执行, 因此,无冲突实施的表现将与数量呈线性关系 芯
例如cartesian graph product是一种可交换和关联操作,可以按任何顺序计算得到的顶点,在这种情况下可以轻松实现并行化。但是,大多数图形操作缺少这些属性中的一个或两个。