CN112667562B - 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 - Google Patents
一种基于cpu-fpga的大规模图上的随机游走异构计算系统 Download PDFInfo
- Publication number
- CN112667562B CN112667562B CN202110092736.6A CN202110092736A CN112667562B CN 112667562 B CN112667562 B CN 112667562B CN 202110092736 A CN202110092736 A CN 202110092736A CN 112667562 B CN112667562 B CN 112667562B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- fpga
- random walk
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000005295 random walk Methods 0.000 title claims abstract description 146
- 230000015654 memory Effects 0.000 claims abstract description 111
- 238000012545 processing Methods 0.000 claims abstract description 108
- 238000004364 calculation method Methods 0.000 claims abstract description 104
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 38
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 30
- 238000007781 pre-processing Methods 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims abstract description 20
- 239000011159 matrix material Substances 0.000 claims description 38
- 239000000872 buffer Substances 0.000 claims description 33
- 230000007704 transition Effects 0.000 claims description 33
- 238000000547 structure data Methods 0.000 claims description 20
- 238000005070 sampling Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 3
- 239000003999 initiator Substances 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000003993 interaction Effects 0.000 claims description 2
- 230000002159 abnormal effect Effects 0.000 claims 1
- 238000013144 data compression Methods 0.000 claims 1
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000013461 design Methods 0.000 description 16
- 241001272996 Polyphylla fullo Species 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000003012 network analysis Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000007420 reactivation Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种基于CPU‑FPGA的大规模图上的随机游走异构计算系统,用于提高大规模图计算中随机游走的性能问题。包括主机端处理主系统和FPGA计算子系统;主系统包括主机端PCIE接口模块、图数据预处理模块;子系统包括PCIE接口模块、片上主控制器模块、存储单元模块、随机数产生器模块、计算模块以及访存控制器模块;完整图数据存储到主系统中,部分重要数据以及计算过程数据存储到存储单元模块;利用PCIE提供的主系统与子系统之间的高速数据传输处理大规模图数据上的随机游走;存储单元模块为两级存储结构,将重要性高的顶点提前缓存到了片上;利用随机游走算法的高并行性,设计了多个并行异步处理单元组成的计算模块。
Description
技术领域
本发明属于异构计算技术领域,涉及随机游走算法的基于CPU与FPGA的异构计算系统设计。
背景技术
随着大数据时代的到来及图计算领域的快速发展,规模庞大的各类数据可以很自然的转换成图结构数据并进行图数据分析,图计算成为了社交网络分析、芯片顶点网络分析、机器学习等数据规模庞大的计算任务的重要手段。例如,对于社交网络中各用户的相似度计算:每个用户可以视作一个顶点,每两个用户之间若是存在社交信息流动,则对应的两个顶点之间可以构成一条边。根据不同相似度衡量算法,边可以是无向的,这样整个社交网络中的用户之间就通过社交信息流动连接起来;边也可以是有向的,根据两个用户之间的信息流动方向,对应边的方向就可以按照信息流动方向设定。以此类推,整个社交网络就可以构造成一个包含多个顶点和多条边的图结构数据,通过对该图数据的计算和分析,就可以得到我们想要的社交网络用户相似度衡量信息。随机游走算法是图计算中的重要组成部分,很多图计算方法均以随机游走算法作为基础手段。在现有的基于随机游走图数据分析技术中,一般采用定长的随机游走算法来采样随机游走路径:给定一个图,图由顶点和边构成,在图数据顶点中选择一个顶点作为起始顶点,然后行人(walker)根据给定的各邻居顶点的转移概率来选择下一跳顶点,并从图数据中读取下一跳顶点信息,这样walker就走到了下一跳顶点;以此类推,直到走过的顶点个数达到预定的长度,存储该随机游走路径信息,则得到了一条随机游走路径;重复上述过程直到得到了预定的路径条数,图数据中的随即游走算法就完成了。随机游走算法是一种访存密集型计算任务,其计算阶段并不需要很复杂的运算,但是会有大量的随机访存导致的延迟,尤其随着图数据规模的扩大,访存逐渐成为性能瓶颈。传统的CPU与GPU面对这种大量随机访存的计算特点,很难充分利用其高并行性,并且访存延迟带来的性能开销较为明显,因此在很多图计算手段中,随机游走算法作为重要步骤往往带来了很高的性能延迟。基于现有技术,需要能够应用于大规模图数据的计算速度更快的随机游走计算系统以及方法。
发明内容
为了解决大规模图计算中随机游走算法的性能问题,本发明提供了一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,利用FPGA片上缓存的低延迟访存特点和PCIE带来的FPGA与主机之间的高带宽的数据传输能力,解决了在大规模图数据下高效随机游走的问题。
为了实现在大规模图数据下高效的随机游走,本发明采用如下技术方案:
一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,包括:主机端CPU处理主系统和FPGA计算子系统;所述主机CPU处理主系统与FPGA计算子系统通过PCIE接口相连。与传统FPGA计算系统不同,为了应对规模越来越庞大的图数据,提高系统的扩展性,本发明采用主机内存及FPGA片上存储的共享内存机制。利用主机端的大容量内存来存储图数据,可以解决图数据量太大,超过FPGA存储资源容量而导致的无法计算的问题。利用FPGA的片上高速缓存存储关键数据,可以减少访存开销,提高计算速度。
主机端CPU处理主系统功能模块划分概述:
所述主机端CPU处理主系统,主要包括主机端PCIE接口模块、图数据预处理模块。
(1)所述主机端PCIE接口模块,主要用于管理与FPGA子系统之间的PCIE数据传输,用于发送图数据、控制命令、计算任务信息到FPGA计算子系统,其中图数据包括图结构数据信息和概率转移矩阵信息,控制命令包括开始、暂停、重置信息,计算任务信息包括随机游走路径条数、随机游走路径起点、随机游走路径长度信息(随机游走路径长度,代表了需要采样的一条随机游走路径包含的顶点数量,即随机游走走过的顶点数目)。此外,主机端PCIE接口模块还负责监听FPGA处理子系统的数据请求以及结果返回,收到了FPGA处理子系统的数据请求后,访问主机端内存,获取到对应的数据后,将访存结果通过PCIE接口传递回FPGA处理子系统。主机端PCIE接口模块收到了FPGA处理子系统发送来的结果返回数据,将其存储到主机端内存。
(2)所述图数据预处理模块,用于预处理各种格式的图数据,输入为图结构数据和概率转移矩阵数据,输出为处理好的压缩矩阵数据。通过对图邻接矩阵的分析得到每个顶点的度(顶点的度代表顶点的入边个数),并对图中顶点按照顶点的度,从大到小排序。从度数高到低,依次计算顶点及其出边数据存储所需空间,并累加存储所需空间,直到存储顶点及其出边数据所需空间达到了FPGA存储单元的容量限制。将可存入FPGA的这些高度数顶点进行编号重排,来构造以高度顶点为小编号的一个子图,然后将原图、子图、概率转移矩阵数据按照行压缩的方式存储成Compressed Sparse Row(CSR)格式,用以传输给FPGA计算子系统。同时,将子图与原图顶点的编号对应关系存储到主机内存中。
FPGA计算子系统功能模块划分概述:
所述FPGA计算子系统主要包括FPGA端PCIE接口模块、片上主控制器模块、存储单元模块、随机数产生器模块、计算模块以及访存控制器模块。
(1)FPGA端PCIE接口模块,主要用于FPGA端PCIE接口的数据传输控制,接收主机端传来的数据并解析,发送给存储单元模块,将FPGA端的访存请求数据及控制信息、结果信息通过PCIE接口发送给主机端CPU处理主系统。
(2)片上主控制器模块,用于控制FPGA计算子系统的全局模块调度,解析主机端CPU处理主系统的控制命令及进行FPGA逻辑电路全局控制。
(3)存储单元模块,用于综合FPGA片上存储资源,构建2级缓存结构,存储图数据信息、控制信息、结果信息。
(4)随机数产生器模块,用于在FPGA上生成高质量的随机数,提供给计算模块使用。
(5)计算模块,用于在大规模图数据上的随机游走算法的计算,包括6个或者更多的处理单元,各处理单元之间完全并行,每个处理单元可独立进行一次随机游走算法的采样过程来生成一条随机游走采样路径。
(6)访存控制器模块,包含PCIE数据请求队列、访存缓冲池,用于处理计算模块的各处理单元的访存请求,计算数据存储地址,从存储单元模块取得对应数据或者通过PCIE接口向主机端请求图数据,将数据发送给处理单元以及结果数据向主机的发送。
系统的整体流程:
本发明所设计的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,输入为图结构数据、概率转移矩阵、计算任务信息(包括随机游走路径长度、随机游走路径条数、随机游走起点),输出为一批随机游走路径信息(每条路径信息包括walker顺序走过的每个顶点编号)。从系统执行的整体流程来看,主要如下所述:
(1)主机端CPU处理主系统和FPGA计算子系统启动
(2)主机端PCIE接口模块和FPGA端PCIE接口模块建立连接。
(3)主机端CPU处理主系统接收用户输入的图结构数据、概率转移矩阵数据、随机游走任务信息,并将其传递给图数据预处理模块。
(4)图数据预处理模块,将图中所有顶点按照度数进行从大到小排序,计算可存储到FPGA片上存储的部分高度顶点;对这些挑选出来的高度顶点进行重编号,按照度数从大到小,依次赋予从0顺序增加的编号,这部分重编号后的顶点及其出边构成了一个新的子图;然后将原图、子图结构及概率转移矩阵数据压缩成CSR格式矩阵数据。
(5)主机端PCIE接口模块将预处理后的子图结构数据、概率转移矩阵数据、计算任务信息通过PCIE接口发送到FPGA计算子系统。
(6)FPGA端PCIE接口模块接收到了图数据、概率转移数据及计算任务信息后,传递给存储单元模块。
(7)存储单元模块将所有相关数据缓存。
(8)片上主控制器模块将计算任务信息发送给计算模块的各个处理单元。
(9)随机数产生器模块开始产生随机数序列,并缓存到存储单元模块。
(10)计算模块将随机游走计算任务分配给各个处理单元,所有处理单元并行的执行随机游走路径采样。
(11)处理单元执行路径采样过程中,通过访存控制器模块进行数据访问及存储。
(12)访存控制器模块通过访存缓冲池和PCIE数据请求队列对访存信息进行管理,并计算相关数据地址,向存储单元访问,或通过FPGA端PCIE接口模块向主机端PCIE接口模块传递内存访问请求。主机端PCIE接口模块访问对应的数据并返回给FPGA计算子系统。访存控制器模块在得到返回的数据后,传递给对应处理单元。
(13)处理单元将随机游走路径采样过程中走过的顶点,通过访存控制器模块存储到存储单元模块。
(14)存储单元模块存储随机游走路径信息,达到了容量后,通过FPGA端PCIE接口和主机端PCIE接口,发送到主机内存。
(15)所有处理单元的计算任务均完成之后,片上主控制器向主机发送任务结束信息,主机端CPU处理主系统解析随机游走路径,将对应的子图编号还原到原图编号,最终得到了一批随机游走路径信息,则随机游走的执行过程完成。
有益效果
本发明所设计的基于CPU-FPGA的大规模图上的随机游走计算系统,将完整的图数据存储到了主机内存中,部分重要数据以及计算过程数据存储到了FPGA片上存储资源。这种设计方法可以适用到其他数据规模庞大的计算任务中,具有高扩展性。利用PCIE提供的主机内存与FPGA之间的高速数据传输,可以处理大规模图数据上的随机游走,其处理上限取决于主机内存。本发明利用FPGA上有限的存储资源构建了两级存储结构,同时分析了图数据上的随机游走特点,将重要性较高的顶点提前缓存到了片上,提供了更为高效的内存访问。这种设计方式不仅适用于随机游走算法,同时也适用于其他通用图计算技术,是一种普适性的系统设计方法。本发明利用随机游走算法的高并行性,设计了多个并行异步处理单元组成的计算模块,可以最大限度的利用随机游走过程的并行能力,与串行计算相比,提高了计算效率以及访存利用率。在FPGA芯片上的各个模块均没有直接的数据交互,而是通过一些控制单元,缓冲单元来间接交互,每一层次的连接属于松耦合关系,保证了系统的稳定性。
附图说明
图1:本发明所设计的基于CPU-FPGA的大规模图上的随机游走异构计算系统架构示意图
图2:本发明所设计的FPGA片上存储单元示意图
图3:本发明所设计的FPGA端计算子系统的计算模块的执行示意图
图4:本发明所设计的FPGA上随机游走下一步顶点选择示意图
图5:本发明所设计的主机端CPU处理主系统的执行示意图
图6:本发明所设计的FPGA端计算子系统的执行示意图
具体实施方式
主机端PCIE接口模块设计
PCIE接口是一种串行通信接口,具有非常高的带宽和传输速率,因此本发明为了提高FPGA计算子系统访问主机端内存的速度,使用了PCIE接口作为通信方式。主机端的PCIE接口模块需要能够识别并注册与主机相连接的PCIE设备,在与PCIE设备建立连接之后,需要负责主机端CPU与FPGA计算子系统之间的数据收发功能。由于PCIE接口是由多条通道(lane)组成的传输通道,这些通道之间完全并行且独立,在PCIE端设备上进行消息组合以及并转串的转换,因此本发明为了提高整体PCIE接口数据收发效率,在CPU端的主系统设计中,采用了多线程,每条线程负责一个PCIE通道的数据收发。主线程负责控制信息、计算任务信息以及结果信息的收发,子线程负责图数据的传输。每个PCIE通道是由发送(Transport)和接收(Receive)两条差分总线构成,因此收发可同时进行。为了尽量提高PCIE通道的带宽,提高PCIE通道传输利用率,主机端PCIE接口模块里设置了访存缓冲区,在处理访存信息的同时,可以继续接受访存信息,并缓存到缓冲区中,等到一批访存信息处理完毕之后,从缓冲区中取出下一批访存信息来进行处理,通过这样的访存缓冲区,来提高PCIE接口的通信效率。
主机端图数据预处理模块
FPGA的片上存储访存速度虽然非常高,但是存储容量非常有限,而图数据的规模非常庞大,因此无法完全存储在FPGA计算子系统之上,为了更好地利用有限的FPGA片上存储资源,减少数据访存开销,本发明通过分析图数据结构的特点以及随机游走算法的访存特点,对图数据的存储方式以及位置进行深入优化,来提高访存性能。
大规模图数据如社交网络往往具有幂律特性,大部分顶点稀疏,局部顶点稠密。因此只有少数顶点具有大量的邻居顶点,大部分顶点与其他顶点没有关联。为了提高访存的效率,需要更好地利用FPGA片上存储资源来存储一些更为重要的顶点。而随机游走的每一次顶点选择都是随机的,因此很难预测下一步顶点会走到哪里,这也导致了基于预测机制的动态内存置换很难实现,这也是在CPU与GPU上随机游走算法的访存效率较低的原因,无法提前载入数据,数据依赖性太强。因为不能很好地动态置换缓存,因此本发明采用了固定的FPGA片上缓存结构来存储一些更为重要的顶点。本发明采用顶点的度作为顶点重要性的衡量方式,一个顶点具有较高的度意味着该顶点的邻居顶点很多。对于无向图,度代表了该顶点所具有的边的数量;对于有向图,我们采用顶点的入度作为度的表示,一个顶点的度表示为指向该顶点的边的数量;所以从全图角度来看,随机游走走到这种高度数顶点的可能性很高,很多顶点都有可能走到该顶点,因此提前缓存好这种高度顶点会带来较好的全局收益。
首先,图数据预处理模块载入一个图结构数据集,图数据的存储方式有很多种,为了能够具有更好地扩展性以及适用性,图数据预处理模块首先将各种格式组织的图数据(邻接表、边集合)转换成邻接矩阵格式,邻接矩阵的行号及列号代表顶点的编号。
然后,通过对该邻接矩阵进行每列非零元素数计算来获得每个顶点的度数(每一列非零元素,代表该行号所对应的顶点与该列号所对应的顶点存在边,而如前面所述,顶点的边数等于度数,计算邻接矩阵一列的非零元素个数可以得到该顶点的度)。在得到了各个顶点的度数之后,对整个图的顶点按照度数进行从高到低的排序,根据FPGA上存储单元容量挑选出部分高度顶点(高度顶点即图中度数最高的一部分顶点)。挑选的规则如下:从度数高到低,依次计算顶点及其出边数据存储所需空间,并累加存储所需空间,直到存储顶点及其出边数据所需空间达到了FPGA存储单元的容量限制。这部分高度顶点即代表了可存储到FPGA上的子图数据。
由于FPGA上的片上存储结构主要是按行号索引的方式,因此为了节约存储空间,避免存储占用空间较大的顶点存储位置索引表,我们需要将图的顶点编号(ID)进行重编号。图数据预处理模块将这些高度数顶点及其出边对应顶点,按照从0开始的顺序依次重新赋予顶点编号,在主机内存中记录对应的重编号表,用于对结果数据的编号还原。在完成了顶点ID重编号后,得到了一个由高度顶点编号为从0开始的子图,这个子图包含了原图数据中高度数的顶点,且编号连续。重编号表记录了子图与原图的顶点编号对应关系,用于在访存过程中原图数据的访问以及最终采样出来的随机游走路径的结果编号还原。
之后,由于大规模图数据的稀疏特点,因此为了避免存储邻接矩阵中的不必要的零元素,需要对该稀疏矩阵进行压缩,本发明采用CSR格式来对稀疏的邻接矩阵和概率转移矩阵进行压缩,CSR格式可以很好地压缩稀疏矩阵数据,具有较高的压缩率。CSR是标准的稀疏矩阵压缩方式,需要三类数据来表达:数值(Values),列号(Column Indices),以及行偏移(Row Offsets)。CSR不是三元组,而是整体的编号方式。其中,列号(Column Indices)表示图的邻接矩阵中,每个非零元素对应的列号,行偏移(Row Offsets)表示每一行的第一个非零元素在Values中的偏移位置,数值(Values)表示概率转移矩阵数据中的每个非零元素值,因为概率转移矩阵与图的邻接矩阵每个元素一一对应,概率转移矩阵存储每个顶点之间的转移概率,邻接矩阵只存储每个顶点之间是否存在边,概率转移矩阵中的非零元素,代表了邻接矩阵中相同位置元素对应的两个顶点之间的转移概率。通过对图数据的压缩处理,我们就可以得到三个数组组成的图数据结构。FPGA端PCIE接口控制器模块
与主机端PCIE管理模块功能类似,FPGA端PCIE接口模块主要负责PCIE接口的连接以及消息收发。在FPGA计算子系统启动之后,FPGA端PCIE接口模块需要向主机端PCIE接口发送注册信息以及确认连接。在与主机端PCIE接口进行了连接确认之后,各PCIE传输通道建立。主要分为图数据通道(根据不同的PCIE接口类型,可由多条PCIE通道组成),控制信息通道两部分,其中图数据通道主要负责收发图数据,主要包括图的邻接矩阵信息、概率转移矩阵信息;同时,图数据通道也负责从FPGA向主机请求数据的访存信息发送。控制信息通道主要接收主机端CPU传递过来的控制信息,主要包括启动、计算任务、系统重置命令,以及将FPGA上计算结果返回到主机端CPU上。由于控制信息通道往往传输的数据量较小,且不需要时刻连接,因此控制信息通道只需要一条即可。通过借助Xilinx公司提供的7 SeriesIntegrated Block for PCI Express IP核,FPGA端PCIE接口模块可以很轻易的构建PCIEEndpoint的搭建,并且完成DMA传输的控制,对于FPGA计算子系统而言,传输控制器模块可以简单地理解为由发送与接收两个FIFO缓冲区构成的通信接口。
当FPGA端PCIE接口模块作为接收端时:
(1)接收到了主机端传来的图数据信息,通过与存储单元的确认,将数据从PCIE接口的FIFO缓冲区中取出,并按照顺序存储到存储单元中。
(2)接收到了主机端传来的控制信息,将该控制信息传递到片上主控制器。
(3)接收到了主机端传来的访存结果信息,通过存储单元传递给访存控制器。
当FPGA端PCIE接口模块作为发送端时:
(1)接收到了FPGA上访存控制器传递过来的访存请求,将该请求命令通过PCIE接口传递给主机
(2)接收到了片上主控制器传递过来的控制信息命令(主要包括数据重发命令、重置连接命令),传递该信息给主机端CPU。
(3)接收到了存储管理单元的存储控制信息(主要包括存储已满、可载入容量信息),将该信息传递给主机端CPU。
(4)接收到了存储单元发来的计算结果缓冲区已满信息,将计算结果缓冲区中数据发送给主机端处理主系统。
片上主控制器模块
片上主控制器模块是FPGA计算子系统的中枢控制器,协调FPGA上各模块之间的运行及调度、负责与主机端CPU主系统的控制信息传递与执行。对于该模块,在FPGA上电时需要首先激活,然后向FPGA上各模块发布激活重置命令。在各模块接收到激活命令之后,主控制器模块首先向FPGA端PCIE接口模块发送建立连接的命令,当连接建立完毕,主控制器模块的状态机进入等待状态,等待主机端CPU传递过来的控制命令。当主机端CPU通过PCIE接口向FPGA上存储单元缓存数据完成之后,接收到了主机端CPU传递过来的计算任务信息,片上主控制器开始向FPGA各模块布置计算任务以及调度命令。其行为模式主要如下所述:
(1)FPGA上电自启动,重置FPGA上各模块状态,检查全局模块启动状态。
(2)接收主机端传递过来的计算任务信息,并将其解析发送到计算模块取执行。
(3)接收主机端传递过来的重置及数据丢失信息,解析命令后负责全局模块的再激活及重置。
(4)接收计算模块传来的计算任务进度信息,通过FPGA端PCIE接口模块传递给主机端PCIE接口模块。
存储单元模块
存储单元模块是用来综合管理FPGA片上缓存资源而设计的,FPGA可编程逻辑部分的高速存储资源主要包括由专用的RAM资源组成的BRAM存储,和由寄存器(reg)、部分可转存储的查找表(LUT)组成的分布式RAM(Distributed RAM),这些存储资源是FPGA片上访存速度最快的部分,且资源十分有限,因此需要根据不同的任务妥善配置,来提高内存资源利用率。
总体来讲,如图2所示,存储单元模块将这些片上存储资源抽象成2级缓存,第一级缓存(level 1)为访存延迟最低的Distributed RAM资源组成,主要存储随机数序列、随机游走计算任务信息(包括随机游走起点、随机游走路径条数、随机游走长度)。第二级缓存(level 2)为访存延迟一个时钟周期的BRAM资源组成,level 2缓存主要存储CSR格式图结构数据(包括Values,Row Offsets、Column Indices三个CSR压缩矩阵得到的数组)、历史访存数据缓存(包括CSR格式的图数据)、结果缓存。
在随机游走算法中,由于图上的每个顶点的跳转需要首先访问一个随机数,因此随机数是计算过程中的最频繁访问的数据,且计算过程高度依赖此数据,因此将随机数存储到资源最少、访存延迟最低的Distributed RAM资源中是最为高效的访存方式。其次,随机游走计算任务的信息也是计算单元需要频繁访问的部分,随机游走的计算任务信息主要包括随机游走的起点、随机游走的路径条数、随机游走游走的长度、随机游走的停止条件,因此我们将所有全局可用的任务信息也存储到一级缓存中,便于各计算模块的处理单元访问。
第二级缓存主要为访存延迟一个时钟周期的BRAM资源,给定行索引,在下一个时钟周期可以得到想要的数据,因此BRAM的访存延迟仅次于Distributed RAM,我们选择将图结构数据的CSR格式的3个数组存入BRAM中,以此来提高图结构数据访问速度。如果我们以行人(walker)的角度来看随机游走算法的计算过程,给定一个起点,walker从起点出发,首先载入walker的邻居顶点,然后根据每个邻居顶点的转移概率,walker有概率的走向下一个顶点,依次进行,直到walker走的长度或者walker所处的顶点满足我们设定的停止条件,这样一条随机游走采样路径就得到了。因此,当walker从顶点A走到顶点B的时候,walker有几率会在走回顶点A,可以理解为walker可回头,这是我们可以知道并预测的下一步顶点访存数据。通过将历史随机游走顶点访问数据缓存,可以达到类似CPU上基于预测的动态内存置换效果。因此我们设定了一个历史访存数据缓存单元,采用LRU策略,每一次在有新的访存数据需要存储的时候,将最近最少访问的数据置换出去。
随机数产生器模块
作为随机游走算法的重要部分,随机数是在每一个顶点跳转过程中都需要的基础数据。而随机数的质量直接影响随机游走的采样路径质量,对于后续的图计算过程有很大影响。因此随机数的产生需要满足均匀性质,且多个处理单元共用一个随机数产生器产生的随机数序列,以此来保证所有处理单元的每一次walker得到的随机数符合总体均匀。本发明采用FPGA生成伪随机数,伪随机数产生的办法就是使用LFSR(线性反馈移位寄存器),通过对seed和反馈系数的设定,来获得近似随机的伪随机数序列。它是由n个D触发器和若干个异或门组成的,通过设定随机种子,LFSR可以产生单周期内不重复的随机数序列。在计算任务启动命令从片上主控制器传来后,随机数产生器模块即开始产生随机数序列,将这些产生的随机数缓存到一个固定容量的一级缓存单元中,当缓存容量已满后,暂停随机数的产生。由于对随机数的访存需求是在每一次访问到邻居顶点的图数据后才申请访问的,每次申请从缓存单元中取出一个随机数,同时记录随机数访存指针。当访存指针到达随机数缓存的底部,随机数产生器继续产生随机数序列存入随机数缓存单元并覆盖之前的随机数数据。以此类推,来满足所有处理单元对随机数的需求。
计算模块
计算模块为FPGA计算子系统的计算中心,负责对随机游走算法的执行。其中有多个处理单元,这些处理单元负责相同的计算逻辑,即从一个起点开始进行随机游走,在walker走到每个顶点时,访问顶点邻居数据,然后访问随机数,根据随机数进行有概率的下一跳顶点选择,重复这个过程。各个处理单元之间完全独立,互不影响,因此可以充分利用随机游走算法的高度并行性。
在FPGA上的随机游走算法计算流程整体如图3所示,在完成所有模块的上电初始化和子图数据缓存后,当片上主控制器传来了计算任务信息及启动命令后,计算模块的计算过程如下所示(各处理单元的处理逻辑完全一致):
(1)解析计算任务命令信息,得到随机游走的起点ID和随机游走的条数、随机游走的长度信息。
(2)将计算模块内的各个处理单元进行初始化,将随机游走的采样任务分配给各个处理单元来并行异步的完成。每个处理单元处理的采样任务是为了获得一条随机游走路径,每一条随机游走路径的路径采样都是独立的,因此每个处理单元之间完全独立且异步并行。
(3)每个处理单元接收到了分配的计算任务后,开始独立进行随机游走的路径采样过程。首先读取起点编号ID,向访存控制器模块发出访问该ID所对应的邻居顶点信息及概率转移信息。在得到了访存控制器模块返回的数据后,访问随机数序列缓存信息,得到一个随机数。
(4)然后就需要根据随机数和邻居顶点的转移概率来进行下一跳顶点选择。如图4所示,将邻居顶点的转移概率进行区间叠加,一个顶点的邻居顶点的转移概率之和恒为1,因此将邻居顶点的转移概率按照ID大小进行区间叠加。图4中A顶点为当前walker所处顶点,其有三个邻居顶点B、C、D,分别具有转移概率0.2、0.2、0.6。当随机数大小在0-0.2之间,则相当于在顶点B的概率范围内,因此下一跳顶点选择B,当随机数大小在0.2-0.4之间,相当于落到了C顶点的概率范围内,因此选择C顶点作为下一跳顶点。以此类推,根据随机数的大小和邻居顶点的概率区间,我们可以很快的计算出下一跳顶点位置,完成一步随机游走。在得到了下一步walker要走向的顶点后,将该顶点信息通过访存控制器存储到存储单元的结果缓存,同时将这一步转移信息存储到存储单元的历史访存数据单元。
(5)重复(4)的随机游走过程,直到满足了随机游走的停止条件。停止条件为:一条随机游走路径长度达到了设定的随机游走长度。当走过的路径长度大于等于随机游走长度,则完成了一条随机游走的路径采样。重复随机游走路径采样的过程,直到采样到了固定数量的随机游走路径(固定数量为计算任务中包括的随机游走路径条数),则随机游走算法的执行过程完成。
访存控制器模块
访存控制器模块是连接计算模块与存储资源的枢纽,主要用于处理计算单元所发出的访存请求,其主要包含访存缓冲池和PCIE数据请求队列。访存缓冲池用于处理存储在FPGA存储单元的数据访存请求,PCIE数据请求队列用于处理存储在主机内存中的数据访存请求。由于随机游走算法是一种I/O密集型的算法,因此访存的延迟高低决定了整体算法的执行效率。本发明因此设计了访存控制器模块,通过对FPGA片上缓存以及PCIE接口连接的主机内存的访问优化,高效的为计算模块提供数据。
对于本发明所设计的CPU-FPGA异构计算系统,其中的存储资源分为两大部分,第一部分为资源容量很大的主机内存,其作为系统的主要共享内存,存储了随机游走算法所需要的一切图数据。第二部分为FPGA片上各存储资源所综合形成的FPGA片上存储单元部分,存储了一些较为重要的顶点以及关键计算信息。因此,作为连接处理单元访问存储资源的接口,访存控制器模块需要综合考虑各级缓存的传输速度以及带宽延迟。为了充分利用随机游走算法的并行性,本发明设定了可支持N个并行的处理单元。因此访存控制器模块需要能够处理高并发的访存请求,同时避免串行访存导致的延迟过高。为了解决不同处理单元的高并发访存特点,我们设计了所述的访存缓冲池,将所有处理单元的访存信息缓存到一个序列中,然后按照访存缓冲池中的序列,顺序的处理访存请求,避免丢失处理单元的访存请求而导致处理单元无限期等待。
访存控制器的行为模式主要分为片上访存模式以及PCIE访存模式,接收到处理单元传来的访存请求时,访存控制器首先执行存储地址计算。根据处理单元发送过来的顶点ID来判断顶点的邻居数据是否存储在片上缓存中。当计算地址处于片上缓存的范围,直接向存储单元提交访问请求,然后将存储单元返回的数据传递给请求发起者(对应的处理单元)。当计算地址处于主机共享内存中时,由于PCIE的传输速度很快,但是延迟过高,擅长处理大批量数据传输。因此为了避免小批量数据访问导致的PCIE带宽利用率过低,提高访存效率,我们设计了所述的PCIE数据请求队列,在队列中分别存储请求的数据内容以及请求的发起者。当队列中的数据达到了一定的数量,即透过存储单元,批量向FPGA端PCIE接口模块的发送缓冲区填充,并提交发送请求。在FPGA端PCIE接口模块向主机端PCIE接口模块发送完成数据后,等待主机端PCIE接口模块访问主机内存,在主机端PCIE接口模块申请到了对应的数据后,它将数据发送给FPGA端PCIE接口模块,FPGA端PCIE接口模块将数据传递给访存控制器模块,访存控制器模块解析对应数据标签,根据从不同的申请者发来的数据请求返回数据到处理单元。
同时,访存控制器还负责将处理单元产生的随机游走路径信息存储到片上结果缓存中。当处理单元完成了一步随机游走路径的采样后,会将对应路径信息存储到片上的存储单元中。访存控制器需要根据不同处理单元来计算需要存储的地址,然后将路径信息存储到对应的存储地址。
为了使本发明的技术方案、解决的技术问题和技术效果更加清晰明了,下面以社交网络分析为例进行说明。
基于社交网络分析应用中的用户相似度衡量技术,在社交网络分析中,以用户为顶点,用户之间的社交信息为边,可以构造出社交网络图。然后通过以图中的每个顶点为随机游走起点,各采样出来1000条路径,就完成了随机游走的采样过程,之后根据不同的分析算法,对随机游走路径进行分析,就可以得到不同顶点(用户)之间的相似度。
本实施例通过提出的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统来完成上述目的,对于本发明所提出的系统,输入为图结构数据、概率转移信息、计算任务信息,输出是随机游走路径(条数由应用具体指定,本实施例采用每个顶点为起点,各1000条,但不局限于此)。该CPU-FPGA异构计算系统主要采用Verilog语言进行FPGA逻辑电路设计,但并不局限于Verilog语言,对于同样的逻辑电路功能,可以使用不同的硬件描述性语言编程。为了提高性能,主机端CPU处理主系统上采用C++语言编程,同时,Python、Java等高级语言同样适用。
本实施例采用了Xilinx Zynq-7000 SoC ZC706作为FPGA计算子系统的承载平台,主机端采用了安装了Ubuntu 18.04系统的主机,ZC706具有PCIE Gen2x4的PCIE接口,主机端同样具有PCIE的接口。
该异构计算系统主要以主机端CPU处理主系统作为系统主体调度中心、FPGA上计算子系统作为主要计算单元,以主机上的共享内存作为主要存储、FPGA上的片上存储资源作为高速缓存。通过PCIE接口连接主机端CPU处理主系统与FPGA上计算子系统,同时存储资源之间的动态内存置换也采用PCIE接口,将主机上的共享内存与FPGA的片上存储单元连接。系统的主体架构设计在附图1中可见,所述主机端CPU处理主系统作为系统的主体调度中心,负责接收并分析计算任务、预处理图数据、逻辑判断、管理控制、对主机端内存的访存管理、对FPGA计算子系统进行计算任务分配。所述计算任务在本实施例中包括随机游走起点、随机游走长度、随机游走路径条数三个信息;
所述主机端CPU处理主系统上运行着一个主线程及4个子线程组成的线程池,主线程负责整体系统的逻辑调度及控制功能,每个子线程处理一个PCIE通道(4个通道分别设置为数据传输通道(3个),控制信息通道(1个))的数据,PCIE通道数据由主机端PCIE接口模块传递过来。其主要的行为逻辑如附图5所示,从系统启动后,首先,主机端PCIE接口模块挂载连接到主机的PCIE端设备,并与其进行连接确认。之后,主机端CPU处理主系统接收用户传入的计算任务信息以及图结构数据相关信息。然后,图数据预处理模块对图数据进行预处理。PCIE接口模块将处理好的图数据发送给FPGA计算子系统之后,PCIE接口模块主要负责访存请求的处理以及最后的结果数据存储。
所述图数据预处理模块,预处理的规则如下:输入一个图,包含顶点和边的数据,顶点编号为32位的整数,因此占用4字节存储,边包含两个顶点,因此占用8字节存储。对图中的所有顶点按照顶点的度数从高到低排序,然后按度数从高到低,依次计算顶点及其出边数据存储所需空间,并累加存储所需空间,直到存储顶点及其出边数据所需空间达到了FPGA存储单元的容量限制(在本实施例中采用的ZC706 FPGA,包含19.2Mb的片上存储,因此挑选的图顶点及相关数据不超过19.2Mb)。这部分高度顶点及其出边组成了一个子图,即代表了可存储到FPGA上的图结构数据。对该子图顶点编号进行重新编号,编号规则按照顶点的度从大到小,顶点ID从0增加。之后,在主机内存中,保存子图重编号后的ID与原图的ID的对应关系。所述图数据预处理,通过分析图数据特点及计算任务性质,提高了缓存利用率,同时提升了访存效率。与传统的CPU或者GPU、分布式系统相比,FPGA上的片上缓存的合理利用可以获得非常高的访存性能提升,提高系统的整体计算效率,缩短执行时间,对于大规模图数据下的随机游走起到了很好地加速效果。
所述FPGA计算子系统由存储单元、计算模块、访存控制器、随机数产生器、片上主控制器、FPGA端PCIE接口模块组成。所述计算模块包括多个并行处理单元,独立并行的对随机游走计算任务进行执行。所述随机游走的计算任务主要为采样随机游走路径,每个处理单元按照给定的起点进行随机游走路径的采样。根据ZC706硬件平台资源限制,我们设定了计算模块中共有6个并行处理的单元;多个处理单元完全异步处理,因此没有耦合,可独立承担计算任务。所述FPGA上的片上存储单元由芯片固有的BRAM资源及可存储的LUT、寄存器资源综合形成的分布式RAM组成。通过将BRAM资源组成多个包含32位宽的数据表,来存储图的压缩邻接矩阵信息。片上的控制信息、中间数据、以及计算任务信息由分布式RAM进行存储。其中BRAM设定了一个时钟周期的延迟访问,分布式RAM采用固有的同时钟数据访问。为了提高计算任务的精度,所有的存储数据的单元均采用宽度为32位。所述访存控制器,采用访存缓冲池、PCIE数据请求队列,对访存信息进行缓存及消息融合。由于不同处理单元的独立并行的异步访存特点,访存控制器利用访存缓冲池来进行访存请求的缓存及排序,避免了访存错误及丢失情况,同时访存缓冲池中还会进行消息融合,对于访问同一地址数据的请求,进行合并,避免重复访存。PCIE请求队列对访存地址在主机内存中的请求进行缓存,PCIE请求队列的容量设定为所有处理单元的一半,当一半的处理单元都处于请求状态,触发一次PCIE数据请求。
所述随机数产生器,采用线性反馈移位寄存器(LFSR)作为伪随机数生成的方式,设定了包含32位的状态转移,以及随机数暂停、重置、种子选择功能。随机数产生器输入为一个32位的种子,输出为32位的随机数。所述片上主控制器,采用有限状态机(FSM)设计,包含6个状态:初始化、等待、数据就绪、任务就绪、计算中、任务完成。综合控制FPGA上的各个模块之间的协同计算。所述FPGA端PCIE接口模块,采用FIFO作为缓冲区,利用FSM来进行时序控制以及数据收发。
所述FPGA计算子系统的执行逻辑如附图6所示,当FPGA系统启动后,通过片上主控制器复位并重置所有模块。然后FPGA端PCIE接口模块激活PCIE接口,并向主机PCIE接口注册信息。当PCIE连接确认之后,片上主控制器进入等待状态。FPGA端PCIE接口模块将4个通道分别设置为数据传输通道(3个),控制信息通道(1个)。在PCIE连接确认后,FPGA端PCIE接口模块开始监听数据传输通道,并将传递过来的数据信息传递到片上存储单元。片上存储单元按照行地址索引,依次存储数据(根据顶点的编号存储到编号对应的行地址)。当数据信息传输完毕,PCIE接口模块监听控制信息通道,接收到传来的计算任务信息及启动命令后,PCIE接口模块将计算任务信息(包括随机游走路径条数、长度、起点)及启动命令发送给片上主控制器。片上主控制器在接到了命令后,将计算任务信息下发到计算模块的各个处理单元,并通知随机数产生器来产生随机数序列,随机数产生器模块将产生的随机数序列存储到存储单元模块的level 1缓存中。之后,计算模块中的各个处理单元开始解析计算任务信息,获取到随机游走的路径条数、长度、起点;然后,所有处理单元开始独立并行的执行计算任务。访存控制器单元开始接受各个处理单元发来的数据访问请求并存储到访存缓冲池,然后顺序读取访存缓冲池中数据,通过计算数据地址判断是否需要进行PCIE通信。当数据在FPGA片上的时候,可以直接向存储单元请求数据并发送给对应处理单元。当数据在主机内存中时,访存控制器会通过消息缓冲机制,将PCIE访存请求队列保存到PCIE数据请求队列。当PCIE数据请求队列容量已满,触发一次PCIE访存操作,访存控制器通过FPGA端PCIE接口模块向主机请求数据,得到了主机端传递来的数据后,再返回给对应处理单元。
各个处理单元独立的执行随机路径的生成,路径信息通过访存控制器存储到结果缓存区,等待发送给主机内存。当结果缓存区已满,则存储单元模块会通过PCIE接口模块将数据发送给主机内存来保存。当所有的处理单元完成了规定的计算任务后,向主机发送任务完成信息。主机开始将结果缓存中的所有随机游走路径进行编号还原,将子图的编号重新还原到原图。最后,主机的内存中就存储了针对该图的随机游走结果,得到了一批随机游走路径。这些随机游走路径可进一步用于数据分析,来得到想要的相似度结果。
以上实施例对本发明的原理及具体实施方式进行了详细说明,实施例只是为了用于帮助理解本发明的核心技术内容,并不用于限制本发明的保护范围,本发明的技术方案不限制于上述具体实施方式内。本技术领域的技术人员在不脱离本发明的原理前提下,做出的任何改进和修饰,都应落入本发明的专利防护范围。
Claims (5)
1.一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,包括CPU处理主系统和FPGA计算子系统;所述CPU处理主系统与所述FPGA计算子系统通过PCIE接口相连接;所述CPU处理主系统包括主机端PCIE接口模块、图数据预处理模块;所述FPGA计算子系统,包括FPGA端PCIE接口模块、片上主控制器模块、存储单元模块、随机数产生器模块、计算模块以及访存控制器模块;
CPU处理主系统中的内存,存储了随机游走算法所需要的一切图数据;
所述主机端PCIE接口模块,用于管理CPU处理主系统和FPGA计算子系统之间的PCIE数据传输;通过PCIE接口,发送图相关数据、计算任务相关信息、控制命令信息到FPGA计算子系统;并且,监听PCIE接口,接收FPGA处理子系统发送过来的数据请求以及结果返回;
所述FPGA端PCIE接口模块,用于管理FPGA计算子系统和CPU处理主系统之间的PCIE数据传输;监听PCIE接口,接收CPU处理主系统发送到FPGA上的图数据相关信息、计算任务相关信息、控制命令信息;通过PCIE接口,发送访存控制器模块传递过来的访存请求数据、存储单元模块中的结果数据到CPU处理主系统;
所述片上主控制器模块,用于控制FPGA计算子系统的全局模块调度,包括解析主机端CPU处理主系统的控制命令,包括启动、暂停、重置,对全局模块进行启动、复位及重置;
所述随机数产生器模块,采用线性反馈移位寄存器LFSR作为伪随机数生成的方式,用于在FPGA上生成高质量的随机数序列,提供给计算模块的各个处理单元使用;
其特征在于,
所述图数据预处理模块,用于压缩输入的图相关数据,以及从输入的图划分出一个存储到FPGA计算子系统上存储单元的子图,并压缩;所述的图相关数据包括图的结构信息、顶点之间的转移概率;压缩后的图相关数据存储在CPU处理主系统中;
所述存储单元模块,用于综合FPGA片上存储资源,存储频繁访问的图数据信息、计算任务信息、以及结果信息;
所述计算模块,用于对随机游走算法的执行;
所述访存控制器模块,用于处理高并发的访存请求;
主机端PCIE接口模块和FPGA端PCIE接口模块建立连接;主机端CPU处理主系统接收用户输入的图结构数据、概率转移矩阵数据、随机游走计算任务信息,并将其传递给图数据预处理模块;图数据预处理模块,接收到了输入的图结构数据、概率转移矩阵数据后,进行数据预处理,得到了CSR格式的压缩矩阵数据;主机端PCIE接口模块将预处理后的子图结构数据、概率转移矩阵数据、计算任务信息通过PCIE接口发送到FPGA计算子系统;FPGA端PCIE接口模块接收到了图数据、概率转移数据及计算任务信息后,传递给存储单元模块;存储单元模块将接收到的图数据、概率转移数据及计算任务信息进行存储,存储完成后告知片上主控制器模块;片上主控制器模块在图数据存储完毕之后,将计算任务信息发送给计算模块,并告知随机数产生器模块启动信息;随机数产生器模块接收到了启动信息后,开始产生随机数序列,并缓存到存储单元模块;计算模块将随机游走计算任务分配给各个处理单元,所有处理单元开始并行且独立的执行随机游走路径采样;处理单元执行路径采样过程中,通过访存控制器模块进行图数据访问及路径信息存储;访存控制器模块接收到了处理单元传递来的访存信息后,进行访存操作,将访存得到的数据返回给对应的处理单元;处理单元将随机游走路径采样过程中走过的顶点,通过访存控制器模块存储到存储单元模块;存储单元模块存储随机游走路径信息,达到了容量后,通过FPGA端PCIE接口和主机端PCIE接口,发送到主机内存;所有处理单元的计算任务均完成之后,片上主控制器向主机发送任务结束信息,主机端CPU处理主系统解析随机游走路径,将对应的子图编号还原到原图编号,最终得到了一批随机游走路径信息。
2.根据权利要求1所述的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,其特征在于:所述图数据预处理模块中的划分规则为:提取原图中邻居数量最多的多个顶点构成新的子图;然后对子图进行图数据压缩处理,得到CSR格式的压缩矩阵数据;其中顶点数量的确定方式为:计算选出的每个顶点及其出边数据存储所需的空间,并累加存储所需空间,直到所需空间达到了FPGA存储单元的容量限制,此时对应的顶点数量即为所求;子图中各顶点之间的转移概率也存储在FPGA计算子系统上的存储单元。
3.根据权利要求1所述的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,其特征在于:所述的存储单元模块将FPGA的片上缓存资源综合起来形成了两级缓存结构,第一级缓存level 1为Distributed RAM资源组成,用于存储随机数序列、随机游走计算任务信息,其中,所述随机游走计算任务信息包括随机游走起点、随机游走路径条数、随机游走长度;第二级缓存level 2为BRAM资源组成,用于存储CSR格式的子图结构数据、历史访存数据缓存、以及结果缓存;所述历史访存数据为随机游走计算过程中访问过的历史顶点数据,采用最近最少访问策略对历史访存数据进行更新。
4.根据权利要求1所述的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,其特征在于:所述的计算模块由多个处理单元构成;每个处理单元,异步并行的处理一条随机游走路径采样过程;各个处理单元之间完全独立,互不影响,且执行相同的计算逻辑,没有耦合关系;任一处理单元都可以独立完成全部计算任务;所有的处理单元之间没有数据交互及数据依赖,当一个处理单元发生异常,可由其他处理单元代替执行任务;所述处理单元的计算任务由计算模块统一划分,在计算模块获得计算任务后,按照平均原则,进行子任务划分及分配。
5.根据权利要求1所述的一种基于CPU-FPGA的大规模图上的随机游走异构计算系统,其特征在于:所述的访存控制器模块由访存缓冲池和PCIE数据请求队列构成;访存缓冲池用于处理存储在FPGA存储单元的数据访存请求,PCIE数据请求队列用于处理存储在主机内存中的数据访存请求;当访存数据地址位于存储单元模块时,所述访存缓冲池将处理单元的访存信息缓存到一个序列中,然后按照访存缓冲池中的序列,顺序的处理访存请求;当访存数据地址位于主机内存中时,所述PCIE数据请求队列,分别存储请求的数据内容以及请求的发起者,当队列容量已满时,通过PCEI接口向主机内存发送一次数据请求;所述的访存控制器模块,采用了消息融合机制,多个处理单元访问同一数据地址时,会进行访存消息的融合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110092736.6A CN112667562B (zh) | 2021-01-22 | 2021-01-22 | 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110092736.6A CN112667562B (zh) | 2021-01-22 | 2021-01-22 | 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667562A CN112667562A (zh) | 2021-04-16 |
CN112667562B true CN112667562B (zh) | 2024-04-05 |
Family
ID=75414285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110092736.6A Active CN112667562B (zh) | 2021-01-22 | 2021-01-22 | 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667562B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114742691B (zh) * | 2022-05-19 | 2023-08-18 | 支付宝(杭州)信息技术有限公司 | 一种图数据采样方法和系统 |
CN116188239B (zh) * | 2022-12-02 | 2023-09-12 | 上海交通大学 | 多请求并发的gpu图随机游走优化实现方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778077A (zh) * | 2015-04-27 | 2015-07-15 | 华中科技大学 | 基于随机和连续磁盘访问的高速核外图处理方法及系统 |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器系统的设计方法 |
CN111124675A (zh) * | 2019-12-11 | 2020-05-08 | 华中科技大学 | 一种面向图计算的异构存内计算设备及其运行方法 |
-
2021
- 2021-01-22 CN CN202110092736.6A patent/CN112667562B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778077A (zh) * | 2015-04-27 | 2015-07-15 | 华中科技大学 | 基于随机和连续磁盘访问的高速核外图处理方法及系统 |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器系统的设计方法 |
CN111124675A (zh) * | 2019-12-11 | 2020-05-08 | 华中科技大学 | 一种面向图计算的异构存内计算设备及其运行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112667562A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hwang et al. | Centaur: A chiplet-based, hybrid sparse-dense accelerator for personalized recommendations | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
US20220382460A1 (en) | Distributed storage system and data processing method | |
Huang et al. | A heterogeneous PIM hardware-software co-design for energy-efficient graph processing | |
US10768856B1 (en) | Memory access for multiple circuit components | |
CN112667562B (zh) | 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 | |
Sethi et al. | RecShard: statistical feature-based memory optimization for industry-scale neural recommendation | |
CN111124675B (zh) | 一种面向图计算的异构存内计算设备及其运行方法 | |
KR102147356B1 (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
KR101747966B1 (ko) | 자율 서브시스템 아키텍처 | |
KR101793890B1 (ko) | 자율 메모리 아키텍처 | |
CN102681952A (zh) | 将数据写入存储设备的方法与存储设备 | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
JP2022530873A (ja) | 機械学習アクセラレータに対する機械学習モデル更新 | |
TW202207031A (zh) | 用於記憶體通道控制器之負載平衡 | |
JP7492555B2 (ja) | 複数の入力データセットのための処理 | |
CN117015767A (zh) | 存储器信道控制器的芯片上互连 | |
CN103488699A (zh) | 基于内存数据网格的数据处理装置和方法 | |
CN110401681A (zh) | 用于数据传输、数据接收的方法以及电子设备 | |
Cheng et al. | An adaptive computation framework of distributed deep learning models for internet-of-things applications | |
Tan et al. | Quiver: Supporting gpus for low-latency, high-throughput gnn serving with workload awareness | |
CN105608046A (zh) | 基于MapReduce编程模型的多核处理器架构 | |
CN116126528A (zh) | 资源分配方法、缓存状态控制方法及相关设备 | |
Zhou et al. | Accelerating broadcast communication with gpu compression for deep learning workloads | |
CN115033904A (zh) | 数据处理方法、装置、系统、介质和产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |