GraphIA: An In-situ Accelerator for Large-scale Graph Processing

摘要

图处理广泛应用于各个领域,而处理大型图则始终受内存限制。原位处理是一种有前途的解决方案,可以克服此类内存密集型应用程序中的“内存墙”挑战。以前的图形处理加速器设计仅关注于在内存中集成更多的计算单元或使用更多的内存层,而不是利用内存库中的巨大并行性。在本文中,我们介绍了GraphIA,这是一种基于DRAM技术的大规模图形处理原位加速器。 GraphIA通过将多个芯片与内部计算电路连接起来,将DRAM中的大容量内存和计算资源耦合在一起。。GraphIA芯片被组织成一个缩放环互连,它能够以最小的连接开销最大化单个带宽,并通过使用更多的芯片来缩放到更大的图形。 DRAM中的存储体与定制的外围电路协作,被组织成异构的边缘和顶点存储体。为了克服由于我们的多芯片环形结构中不规则的本地和远程存储器访问而导致的性能损失,进一步引入了异构存储体中的数据复制和调度方案,分别实现了1.63倍和1.16倍的加速。根据我们的大量实验,通过采用GraphIA设计,我们的原位加速器实现了217倍CPU-DRAM加速设计。

介绍

随着“大数据”时代的到来,图的大小继续扩大,在通用体系结构上实现高图处理性能更具挑战性。提出了许多定制的图形处理加速器。提高大规模图形处理性能并克服“内存墙”的基本方法大数据问题是提供高带宽的数据访问。因此,这些图形处理加速器通常集成了多个“更接近”存储器的处理单元,包括使用片上eDRAM,片上SRAM,新兴的3D堆栈存储器。这样的设计相对于传统体系结构上的图形处理系统,可以达到加速的幅度。

但是,在内存附近“更紧密”地集成处理单元仍然会将内存视为整个存储部分,而无需研究内存内部的并行性和带宽。最近,提出了原位处理来解决这个问题。例如,DRISA 将DRAM修改为可重构的原位加速器,并在神经网络计算中相对于基于ASIC的加速器设计实现了8.8倍的加速。原位加速器的主要思想是修改内存中的电路以执行计算功能,而不是简单地将计算单元“更紧密地”放置到整个内存部分。原位加速器的想法可能是一种有前途的解决方案利用内存内部的并行性来加速大规模图形处理。然而,将原位计算用于大规模图形处理面临两个问题:
(1)当现实中图需要存储在多个芯片中时,由于局部性差而难以缩放到较大的图形。
(2)密集的不规则内存访问会带来大量开销。众所周知,图形处理以密集的不规则内存访问为名。存储芯片中的数据处理可能会受到其他处理单元的干扰,从而导致带宽损失。

GraphIA,以解决大型图形处理加速器的这两个挑战。 GraphIA遵循Automata 和DRISA的方法,该方法使用DRAM技术构建具有大容量内存和高度耦合的计算资源的原位加速器。我们提出了缩放环互连拓扑和GraphIA芯片的通信方案,以使加速器可缩放到更大的图形
GraphIA设计可以轻松地应用于新兴设备。 GraphIA的主要贡献概述:
•我们提出了用于大规模图形处理的第一个原位架构GraphIA,该架构高度耦合了计算元素和大容量DRAM内存。定制的电路集成到DRAM中,以减少图形数据访问的延迟。
•我们提出了缩放环互连以及我们的数据调度方案,以解决由较大图形问题引起的缩小问题。 GraphIA芯片使用环形结构互连。通过这种方式,GraphIA可以通过使用更多的芯片来扩展到更大的图形,而不会造成明显的性能损失
•我们设计了具有数据复制和调度方案的异构存储体,以进一步利用DRAM存储体中的固有并行性,并克服了由于不规则的本地和远程内存访问而导致的性能损失多芯片结构。仿真结果表明,数据复制和调度平均可以达到1.63倍和1.16倍的速度。
•我们通过综合实验评估了GraphIA的性能,结果表明GraphIA的性能比基于CPU-DRAM的设计高217倍。

背景

图处理模型

Gather-Apply-Scatter(GAS)模型被广泛用于表示各种图形算法。有两种主要的方式来实现GAS模型:以顶点为中心的模型和以边缘为中心的模型:
边缘中心模型是在X流中提出的。算法1显示了边缘中心模型的伪代码。在处理从源顶点vi到目标顶点vj的边缘e i,j时,不同的图算法仅在“ Update()”函数中有所不同。通过限制源顶点和目标顶点的范围,以边缘为中心的模型可以并且确保数据访问的局部性。因此,我们在GraphIA设计中采用了这种以边缘为中心的模型。
在这里插入图片描述

图分割模型

为了确保图形的局部性并将其存储到内存中,需要使用图形分区方法。间隔块分割方法在以前的系统中被广泛采用,其中将所有顶点划分为P个不相交的间隔,然后根据源顶点和目标顶点将边缘划分为P 平方个不相交的块。我们在图1(a)中展示了一个间隔块分割方法的示例。基于边缘中心处理模型和间隔块分割模型,可以以迭代的形式执行不同的图算法。在每次迭代期间,将顺序处理所有块,并依次访问每个块内的边以更新目标顶点。
在这里插入图片描述

图结构

我们的架构包含N个GraphIA芯片。顶点和边缘数据被划分为N个分区,并平均分配给所有N个码片。我们将首先介绍我们的图形划分方法,然后介绍芯片架构的详细信息。然后,我们将展示GraphIA如何加速图形计算,优化内存访问并在处理过程中隐藏芯片间数据传输的长等待时间。

数据划分和分配

现实世界中的图形可能非常大(数百万个顶点和边缘,如表1所示),并且需要多个DRAM芯片来存储整个图形。更重要的是,我们希望能够在多个芯片上启用并行图形处理,以使我们的设计可扩展到更大的问题。结果,我们采用了第2.2节中提到的间隔块划分方法。在我们的设计中,我们将在此图分区阶段中更多地考虑工作负载平衡,而内存访问优化将在后面的低级介绍中进行讨论。为了平衡每个GraphIA芯片的工作量,我们使用基于哈希的方法[7]将顶点划分为N个间隔,然后将边缘划分为N平方个块。

分割后我们重新排列顶点,图1(a)显示了结果。相邻的矩阵分为N列,用不同的颜色标记。由于我们使用哈希函数划分了顶点,因此每一列都包含大约相同数量的顶点和边。每一列中的目标顶点和边被映射到一个GraphIA芯片上(如图1(b)所示)。保证高行缓冲命中率,因为一旦激活一行,每个芯片将包含一个顶点间隔的数据,并且N个边沿块将读取该行中的所有数据。现在,我们的体系结构类似于分布式图形处理系统,而该“分布式系统”中的一个节点是DRAM芯片而不是处理器。

整个结构

图2显示了GraphIA的整个体系结构。左侧显示了以环形拓扑连接的N个GraphIA芯片(修改后的DRAM芯片)。右侧显示了一个芯片的内部。我们使用一些存储库来存储边缘数据和顶点数据。我们还添加了一些外围电路,以实现内部和芯片之间的通信。我们的数据布局和处理能力低的设计可以提供高度的并行性。所有芯片并行处理边,每个芯片上都有用于基本算术/逻辑运算的简单ALU(sALU)。但是,如此高的并行度要求高内存带宽支持。在GraphIA中,还针对边缘数据访问,顶点数据访问和芯片间数据传输对内存访问进行了优化。对于边缘数据访问和芯片间数据传输,将存储器访问序列化以提高行缓冲区命中率。对于计算中的随机顶点访问,我们使用多个存储体和哈希顶点数据布局来提供存储体级并行性

缩放环连接:全部N芯片以环形拓扑连接。在执行期间,每个芯片仅需要将一些顶点数据传输到相邻芯片,并且N个连接上没有数据通信冲突。这种连接使我们的GraphIA可扩展,因为我们可以增加芯片数来存储更大的图形并获得更多的芯片级并行度。

顶点库和控制器:顶点库分为4组。在执行期间的不同时间,不同组具有不同的功能。通常,将使用两组来支持计算。其中一个存储计算后的更新的目标顶点值,另一个存储用于计算的源顶点值。这两个顶点库组将从FIFO接收边的顶点信息,从顶点库读取请求的数据,并将数据发送到计算组件。剩下的两个组将存储从前一个芯片传输来的顶点数据。顶点库的功能将在执行的不同阶段发生变化。有关如何使用这4个顶点库组的详细说明,请参见下面的3.2.3
外围电路和计算组件
我们使用调度程序从边缘存储区中顺序提取边缘数据,然后将顶点数据请求放入FIFO中。不同的FIFO包含存储体组内不同存储体中的顶点地址。顶点数据存储在组内的所有存储体中,以便在顶点数据访问期间完全启用存储体级并行性。计算组件模块具有4个sALU,它们能够同时计算4个边。计算顶点库中每个边之后,将更新目标顶点数据。
在这里插入图片描述

处理流程

在这里插入图片描述
即使芯片i上所有边的目标顶点在I i中受到限制,在基于哈希的顶点分区下,源顶点集仍可以是整个顶点集V。结果,芯片i可以从本地DRAM库中获取Ii中的顶点数据,但需要从其他芯片上的DRAM库中获取I j(j,i)数据。这样的远程内存访问会带来较长的延迟,这会降低系统性能。为了解决此问题,我们将每个迭代进一步分为N个阶段。在一个阶段中,每个芯片仅计算一个块中的边。完整的处理低点解释如下(如图3所示):
(1)在迭代K之前,每个间隔Ii被复制并存储在芯片i的两个顶点组(组0和组1)中。
(2)在迭代K中在阶段0中,芯片i将计算块Bi .i。将将顶点银行组1中的数据用作源顶点集,并将顶点银行组0中的数据用作目标顶点集并在此迭代期间存储更新的顶点数据。
(3 )在此步骤中进行数据复制和调度。在迭代K阶段0的步骤(2)的同时,chipi还将其在Vertex BankGroup 0中的顶点数据(间隔Ii)发送到Vertex BankGroup 0和2的Vertex Bank Group 3。 Ii现在已复制,并且芯片i + 1中的Vertex BankGroup 2和3都具有Ii的副本。
(4)在迭代K阶段1中,芯片i现在具有存储在Vertex Bank Group 0中的更新间隔Ii和两个Ii-复制从芯片i-1传输的1和2在Vertex Bank组2和3中。Chipi将使用来自Vertex BankGroup 2和0的数据计算块Bi-1.i,而无需访问另一个芯片,因为Ii -1已经在上一阶段传输了。
(5)在步骤(4)的同时,芯片i还将间隔Ii-1从其顶点存储组3发送到顶点存储组3和下一芯片i + 1的1,因为顶点存储组2将用于计算
(6)可以重复此过程,直到阶段N − 1,这是此迭代K中的最后阶段。在此阶段,芯片i将计算Bi +1,i块,并在顶点库组0和1中复制目标顶点集。我们不需要在最后阶段将数据传输到下一个芯片。现在,芯片i已完成对所有块B0.i,B1.i,…的计算到BN -1。完成一次迭代。我们可以回到步骤2,开始下一个迭代K + 1。
内存访问优化分析
为避免由于远程内存访问而导致的性能损失,我们的数据调度将预取下一个阶段使用的数据,以便所有计算数据访问都将在本地进行。但是,预取的数据需要用于计算,并同时发送到下一个芯片。这将引入银行冲突,这会显着降低性能。在我们的设计中,所有预取的数据都将被复制,以便计算和数据传输将访问不同的Vertex Bank组。对于边缘库,由于对边缘的访问顺序在我们的处理流程中较低,所以我们可以组织边缘数据以使边缘库中的子阵列行缓冲区始终处于命中状态,直到激活下一行。为了在计算过程中访问源顶点库和目标顶点库,我们使用多个库并将顶点分布在所有库中以提供库级并行性。对于芯片间数据传输,将传输大量连续数据,以便可以充分利用子阵列行缓冲区中的数据。

实验对比

在这里插入图片描述
通过与两种不同的设计进行比较,我们评估了GraphIA中的内存访问优化的效果。第一个是在环形体系结构中不采用数据移动调度(非调度),这样远程数据访问就不会与计算重叠。第二个是我们不重复使用从另一芯片传输来的数据(非重复),以便计算和数据传输将访问相同的Vertex Bank Group并相互影响。
在这里插入图片描述

可扩展性学习

我们从Delaunay图[13]中选择了4个合成图,分别为delaunay_n20,delaunay_n21,delaunay_n22和delaunay_n23。 delaunay_n23的大小是delaunay_n22的2倍,delaunay_n21的4倍,delaunay_n20的8倍,我们使用2芯片GraphIA配置来处理delaunay_n20,并根据图的大小增加芯片数。最后,我们将为delaunay_n23使用默认的16芯片GraphIA配置。所有其他内存参数保持不变。图7显示了不同GraphIA配置的标准化执行时间以及不同大小的图形。我们可以看到,随着芯片数量的增加,性能没有显着下降这可以证明我们的GraphIA可扩展性能够通过增加芯片数量来扩大规模
在这里插入图片描述
存在的问题
我们可以通过增加一个芯片或芯片总数中的内存容量来进一步扩展GraphIA。增加单个存储容量可能不会影响整个数据移动计划。但是,更大的内存将导致更长的延迟。而且一个芯片的最大可能容量受到限制,因为我们无法在特定区域内拥有太多DRAM的芯片

另一方面,就可伸缩性而言,增加芯片数量似乎更容易,但它将增加数据移动开销。假设我们的系统中有N个芯片。一个阶段的执行时间与一个块中的边数| B i,j |成正比。 ≈| E | / N 2.一相中的数据移动时间与一个间隔中的顶点数| Ii |成正比。 ≈| V | / N。随着N的增加,数据移动将占总执行时间。芯片间数据带宽需要增加,例如。使用近存储器数据压缩来增加有效数据带宽。如果计算时间长于数据移动时间,则应增加计算吞吐量,例如,增加存储体的数量以提供更高的内部芯片数据带宽和计算组件的数量。

相关工作

改善图形处理性能的基本方法是为图形数据访问提供更高的带宽。一种可能的解决方案是采用内存中处理(PIM)设计。通过将处理单元集成到内存中,PIM可以实现比常规内存系统更高的带宽,并提供“内存容量成比例”的带宽。以前许多致力于将PIM用于大规模图形处理的工作都是基于混合内存多维数据集(HMC)设备。 HMC是3D堆栈PIM设备,具有用于存储的多个DRAM层连接到逻辑层以进行计算。 Tesseract 提出了一种HMC阵列结构,以将图处理流程映射到其下方。 GraphP 和GraphH 通过精心设计数组中多维数据集之间的连接和数据分配,进一步提高了Tesseract的性能。所有这些工作都使用逻辑层上的处理单元来处理图形,这些处理单元一次只能访问一个存储体。还有其他一些图形处理加速器。 Ozdal等。 提出了一种节能的ASIC设计,通过集成专用于“收集”,“应用”和“散射”操作的电路,并与定制的缓冲区和缓存配合使用以进行顶点和边缘数据补充。 Graphicionado 提出了一种片上流水线结构,并将eDRAM用于片上图形数据存储。 GraphOps 和ForeGraph 提出了在FPGA上带有片上存储器的并行图处理架构。

总结

在本文中,我们将传统的DRAM架构修改为GraphIA,以克服大规模图形处理问题中的“内存墙”挑战。 GraphIA是一种原位加速器,可将大容量内存和DRAM中的计算资源耦合在一起。与以前的图形处理加速器设计不同,GraphIA完全利用DRAM中的内部存储器带宽进行图形处理,而不是简单地将处理单元“更紧密地”放置到内存中。我们与定制的外围电路合作,将GraphIA芯片中的异构存储体组织为边缘存储体和顶点存储体。出于可扩展性考虑,使用缩放环互连拓扑连接GraphIA芯片,这通过使用更多GraphIA芯片使GraphIA可扩展到更大的图形。为了解决由于多芯片环形结构中不规则的内存访问而导致的性能损失,我们提出了数据复制和调度方案来优化异构存储区中的内存访问,从而相对于基准设计分别提高了1.63倍和1.13倍的速度。 GraphIA中的异构存储库(包括数据复制和调度)和缩放环互连方案都可以应用于以前的图形处理加速器。我们的实验结果表明,通过在GraphIA中采用以上设计,我们的加速器相对于传统CPU-DRAM设计可达到217倍的加速。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值