CN109949202B - 一种并行的图计算加速器结构 - Google Patents
一种并行的图计算加速器结构 Download PDFInfo
- Publication number
- CN109949202B CN109949202B CN201910107937.1A CN201910107937A CN109949202B CN 109949202 B CN109949202 B CN 109949202B CN 201910107937 A CN201910107937 A CN 201910107937A CN 109949202 B CN109949202 B CN 109949202B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- vertex
- unit
- 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
Images
Landscapes
- Complex Calculations (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种并行的图计算加速器结构,包括:存储器、预处理电路、控制电路、数据访问单元、调度器、混合粒度处理单元和结果产生单元;其中,预处理电路将待处理的邻接稀疏矩阵图数据转换成独立稀疏列压缩格式CSCI,连同CSCI列标识副本存入存储器;控制电路接收预处理电路发送的转换就绪指示信号,根据主机发送的图计算应用类型控制数据访问单元、混合粒度处理单元、结果产生单元的操作,并将主机发送的顶点索引发送到数据访问单元,数据访问单元、调度器、混合粒度处理单元和结果产生单元根据主机的信息相互交互操作,实现简单图的并行处理。本发明的结构高效实现了图计算中BFS或SSSP两种应用的并行处理,提高了有效带宽,加速了处理过程。
Description
技术领域
本发明涉及一种加速器芯片结构,特别涉及一种并行的图计算加速器结构。
背景技术
随着社交网络等新型互联网应用的兴起和各种电子设备的普及,图计算相关应用日益成为学术界和工业界的研究热点,从技术、应用及自主知识产权等角度看图计算加速器的研发都势在必行,而广度优先搜索(BFS,Breadth First Search)和单源最短路径(SSSP,Single Source Shortest Path)等则是图计算领域的两种基本应用。在图计算并行加速器的设计过程中,需要考虑图数据的存储压缩格式、图计算的并行性、高效性以及难易性等。
如何设计一种芯片结构,能够高效实现简单图的BFS或SSSP并行处理。
发明内容
本发明的目的是提供一种面向大规模图数据,加速BFS或SSSP的应用处理过程的一种并行的图计算加速器结构。
为了达到上述的目的,本发明采用的主要技术方案包括:
本发明提供一种并行的图计算加速器结构,包括:
存储器、预处理电路、控制电路、数据访问单元、调度器、混合粒度处理单元和结果产生单元;
其中,所述预处理电路,用于将待处理的邻接稀疏矩阵图数据转换成独立稀疏列压缩CSCI格式、以及CSCI中列标识副本存入所述存储器;
所述控制电路,用于接收所述预处理电路在存储器中存储完毕之后发送的转换就绪指示信号,根据主机发送的图计算应用类型控制所述数据访问单元、混合粒度处理单元、结果产生单元的操作,以及将主机发送的应用类型一的根顶点索引或应用类型二的源顶点索引发送所述数据访问单元;
所述数据访问单元,用于从所述存储器中读取所述CSCI的图数据和列标识,并根据所述根顶点索引、源顶点索引或结果产生单元传送的活跃顶点索引计算指定顶点在存储器中的物理地址以进行数据访问,以及将读取的数据传输到调度器;
所述调度器,用于将CISI中列标识指示的非零元素个数暂存,并根据所述混合粒度处理单元内处理元的状态信号,将暂存的数据分配到混合粒度处理单元内的处理元进行处理;
所述混合粒度处理单元,用于根据控制电路内的应用类型和结果产生单元的活跃顶点数据对调度器内暂存的数据进行并行处理,并将处理后的中间数据传输结果产生单元;
所述结果产生单元,用于根据控制电路内的应用类型对中间数据进行处理,以及将处理过程的活跃顶点索引发送数据访问单元,将处理后的最终结果存储。
作为本发明进一步改进的,所述控制电路包括:主机接口组件和控制逻辑组件;
所述主机接口组件,用于接收主机发送的应用类型、应用类型一的根顶点索引和应用类型二的源顶点索引;
所述控制逻辑组件,用于接收所述预处理电路发送的转换就绪指示信号,将所述根顶点索引或源顶点索引发送所述数据访问单元,将应用类型发送混合粒度处理单元和结果产生单元,并启动图计算加速器内各模块开始工作;
其中应用类型一是广度优先搜索应用BFS类型,应用类型二是单源最短路径应用SSSP类型。
作为本发明进一步改进的,所述数据访问单元包括:用户逻辑组件、地址计算模块和列标识暂存器;
所述列标识暂存器,用于存储CSCI中图数据的列标识;
所述地址计算模块,用于根据所述控制电路发送的和结果产生单元输入的顶点索引,结合所述列标识暂存器中各列非零元素数据、每行存储数据的数目计算当前活跃顶点i对应数据在存储器中的物理地址;
所述用户逻辑组件,用于从所述存储器中读取所述列标识暂存在所述列标识暂存器中;根据所述地址计算模块计算的地址从所述存储器中读取相应的活跃顶点对应的数据,并向所述调度器发送读取的数据;
以及,再接收调度器发送的暂停读取信号后,停止从所述存储器中读取数据;
所述用户逻辑组件,还用于在所述调度器发送的暂停读取信号失效后再次读取数据。
作为本发明进一步改进的,调度器包括:缓冲区分配模块、任务调度模块和双缓冲区模块;
缓冲区分配模块,用于分析从数据访问单元传送的列数据的列标识对应的数据对,并根据双缓冲区模块传送的缓冲区状态信息把该列标识对应的图数据发送给双缓冲区模块,当双缓冲区模块中所有缓冲区全部占用时,则向数据访问单元发送停止读取信号;
任务调度模块,用于根据混合粒度处理单元传送的处理元状态信号以及双缓冲区模块传送的缓冲区状态信息,把所有缓冲区中未调度数据送入空闲且计算容量满足要求的处理元进行处理;
双缓冲区模块包括:多组暂存容量不同的前后双缓冲区组成;
所述双缓冲区模块,用于在所有缓冲区状态置为“满”时,通知任务调度模块调度缓冲区缓存的图数据,数据调度完成的缓冲区状态置为“空”,并发送缓冲区状态至缓冲区分配模块。
作为本发明进一步改进的,混合粒度处理单元包括:辅助电路模块和处理元阵列;
所述辅助电路模块,用于根据处理元阵列中各处理元状态将结果产生单元输入的活跃顶点数据对与调度器输入的对应的CSCI传输到处理元阵列中相应的空闲处理元;
处理元阵列由多个不同容量的处理元PE组成,多个处理元并行工作;
每一处理元收到辅助电路模块输入的活跃顶点数据对与CSCI后,根据控制电路传输的应用类型对活跃顶点数据对与CSCI进行计算。
作为本发明进一步改进的,每一个处理元,具体用于:
当控制电路传输的应用类型为广度优先搜索时,将活跃顶点数据对的value值加1赋给CSCI中每个数据对的value;
当应用类型为单源最短路径时,将活跃顶点数据对的value与CSCI中每个数据对的value相加后用于更新CSCI中每个数据对的value;
处理元的计算结果输出到结果产生单元,计算结果包含的数据对最大数目与每个处理元同时处理的数据对数目相同。
作为本发明进一步改进的,结果产生单元包括:操作模块、比较器和片上结果暂存器;
操作模块包括:15个操作单元组成的8路4级流水线树;
每个操作单元的计算容量与输入数据包含的数据对最大数目相同;
每一操作单元,用于根据控制电路输入的应用类型对混合粒度处理单元输入的中间数据进行计算;
所述比较器,用于根据所述操作模块输入的数据,逐一按照每个数据对的行索引从片上结果暂存器中读取操作单元处理的行索引对应的上次value值,并与输入的当前value值比较,如果当前value值比上次value值不小,则不执行任何操作,直接进行下一个行索引的计算,如果当前value值更小,则更新操作单元处理的行索引在片上结果暂存器中的value值,并将该行索引对应顶点置为活跃顶点,将该行索引输出到数据访问单元,将行索引及value值数据对输出到混合粒度处理单元;
片上结果暂存器,用于暂存每个顶点的深度/距离。
作为本发明进一步改进的,每一操作单元,具体用于:对于应用类型一和应用类型二进行的计算都是比较操作,即将行索引相同的两路输入数据对的value值进行比较,将较小值作为该行索引对应的新value输出给下一级,直至从最后一级op_cell输出,然后输入到比较器。
作为本发明进一步改进的,所述地址计算模块,还用于根据CSCI在存储器中的基地址BaseAddr,依照公式一确定所述物理地址PhyAddr;
公式一:PhyAddr=BaseAddr+(nnz_c0+nnz_c1+...+nnz_ci)/RowSize;
nnz_ci表示独立稀疏邻接矩阵中对应列的非零元素数目,i为列索引;
RowSize表示存储器每行存储数据的字节数。
本发明的有益效果是:
本发明的特点是采用独立提出的新型稀疏矩阵压缩格式CSCI,借鉴矩阵列向量线性组合实现矩阵向量相乘的思路,结合简单图顶点度数呈幂律分布的特点,提出了本发明的图计算加速器,该图计算加速器高效实现了图计算中BFS和SSSP等两种应用,提高了有效带宽和并行性,加速了处理过程。
附图说明
图1是本发明一实施例提供的一种图计算加速器结构的示意图;
图2是图1中的控制电路的结构示意图;
图3是图1中的数据访问单元的电路结构图;
图4是图1中的调度器的电路结构图;
图5是图1中的混合粒度处理单元的电路结构图;
图6是图1中的结果产生单元的电路结构图;
图7是图6中操作模块的电路结构图。
具体实施方式
为了更好地解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
当前,大规模图数据的管理可以采用多种数据模型,按照一条边可以连接的顶点数目分为简单图模型和超图模型。本发明面向简单图模型,即一条边只能连接两个顶点,且可以存在环路。现实世界中的图通常平均度数,即边数与顶点数的比值,只有几到几百,与动辄上千万甚至上亿个顶点的规模相比显得极为稀疏,且度数呈幂律分布。
简单图模型可以表示成稀疏邻接矩阵形式。图数据由于规模大,在存储器中多以压缩形式存放,压缩格式有CSC(Compressed SparseColumn)、CSR(Compressed SparseRow)、COO(Coordinate List)、DCSC(Doubly Compressed Sparse Column)、以及本发明中提及的CSCI(Compressed Sparse Column Independently)等。
广度优先搜索BFS是基本的图搜索算法,也是很多重要的图算法的基础。广度优先搜索BFS从给定顶点,称为根,开始迭代搜索给定图中的所有可达顶点,并计算从根顶点到所有可达顶点的深度,即最少的边数。初始化时,根顶点的深度被设为0,并标记为活跃(active),所有其他顶点的深度被设为无穷大。在第t次迭代时,与活跃顶点相邻的顶点v的深度按下面的公式计算。如果一个顶点的深度由无穷大被更新为t+1,则该顶点被标记为活跃并用于下一次迭代。如此重复直到搜索结束。
depth(v)=min(depth(v),t+1)
单源最短路径SSSP用于计算从指定源顶点到给定图中所有可达顶点的最短路径距离。初始化时,源顶点的距离被设为0,并标记为活跃(active),所有其他顶点的距离被设为无穷大。在第t次迭代时,假设从顶点u到顶点v的边的权重为w(u,v),那么从源顶点到顶点v的最短路径距离按下面的公式计算。如果一个顶点的距离被更新,则该顶点被标记为活跃并用于下一次迭代。如此重复直到完成所有可达顶点。
distance(v)=min(distance(v),distance(u)+w(u,v))。
本发明的图计算加速器结构是一种用于图计算的、采用稀疏列独立压缩和混合粒度处理单元并行加速的、可以进行BFS和SSSP等两种图计算应用的电路结构。以下结合图1至图7对本发明的图计算加速器的结构和工作原理进行详细说明。
如图1所示,本发明实施例的图计算加速器结构包括一个预处理电路(CSCIU,Compressed Sparsed Column Independently Unit)、一个控制电路(CTR,ConTRoller)、一个数据访问单元(DAU,Data Accessing Unit)、一个调度器(SCD,SCheDuler)、一个混合粒度处理单元(MGP,
Mixed-Granularity Processing unit)以及一个结果产生单元(RGU,ResultGenerating Unit)。
其中,图计算加速器结构中的存储器可理解为通用存储器,用于存储图计算相关数据。
预处理电路(CSCIU)将输入的邻接稀疏矩阵图数据转换成独立稀疏列压缩格式(CSCI)存入存储器,同时在存储器中存储一份CSCI中列标识的副本,也就是说列标识(ioc)中各列对应非零元素数目的副本。
预处理电路的输入可为外部结构的原始输入。另外,简单图的表示形式也有多种,为此,本申请中预处理电路其对邻接矩阵形式的图数据进行转换。
在本实施例中,图数据压缩后的CSCI格式中数据对(index,value)的index由32bit表示,value由16bit表示,index和value的具体含义如表1所示,其中index[31:30]为“01”或“10”的数据对为列标识(ioc)。列标识中各列对应非零元素数目的副本在存储器上按列逐一存储。
表1,CSCI格式中数据对含义说明
在本实施例中,可理解的是,图计算加速器的预处理电路将待处理的以邻接稀疏矩阵表示的图数据转换成独立稀疏列压缩CSCI格式的图数据,每列独立压缩后的图数据包括列标识数据对和非零元素数据对,每个数据对都包括索引index和数值value,由索引index的最高两位指示index其余位与数值value的含义。
此外,预处理电路在存储完成后,向控制电路发出转换就绪指示信号。
参照图2,控制电路(CTR)由主机接口组件(host_IF)和控制逻辑组件(Ctr_Logic)两部分组成。
主机接口(host_IF)接收主机发来的应用类型和应用类型对应的顶点索引并暂存。
本实施例中的应用类型包括:广度优先搜索(BFS)应用的应用类型一、单源最短路径(SSSP)应用的应用类型二。
其中,广度优先搜索(BFS)应用的顶点索引为根顶点索引,单源最短路径(SSSP)应用的顶点索引为源顶点索引。
控制逻辑组件(Ctr_Logic)收到预处理电路发来的转换就绪指示信号后,将顶点索引发送给数据访问单元(DAU),将应用类型发送给混合粒度处理单元(MGP)和结果产生单元(RGU)并启动加速器开始工作。
参照图3,数据访问单元(DAU)由用户逻辑组件(UI)、列标识暂存器(ioc_ram)、地址计算模块(addr_cal)组成。
用户逻辑组件主要完成三个功能:
1)从存储器中读取列标识送入列标识暂存器(ioc_ram)暂存;
2)根据地址计算模块(addr_cal)计算的地址从存储器中读取相应活跃顶点对应的数据,并根据该顶点列标识数据对中的value值确定读取数据的数目;
地址计算模块可根据下述的公式一计算,此外,地址计算过程中可由活跃顶点的索引参与完成,为此,针对活跃顶点计算的地址,2)中相应活跃顶点对应的是地址所属的顶点。
活跃顶点是算法在每轮迭代过程中被更新过的顶点,作为下一轮的活跃顶点。初始时指定根顶点/源顶点,此即第一轮活跃顶点,后续根据根顶点/源顶点进行计算时会产生每一轮的活跃顶点。
3)向调度器(SCD)发送读取的顶点数据,并根据调度器(SCD)发来的暂停读取信号停止从存储器中读取数据,同时保存当前状态,以备调度器发来的暂停读取信号失效后再次读取数据。
列标识暂存器(ioc_ram)用于暂存CSCI格式中图数据的列标识。
地址计算模块(addr_cal)根据控制电路和结果产生单元输入的顶点索引,结合列标识暂存器提供的各列非零元素数据以及存储器每行存储数据的数目RowSize计算当前活跃顶点i对应数据在存储器中的物理地址PhyAddr,假设CSCI格式中图数据在存储器中的基地址为BaseAddr,则PhyAddr可表示为:
公式一:PhyAddr=BaseAddr+(nnz_c0+nnz_c1+...+nnz_ci)/RowSize。
参照图4,调度器(SCD)由缓冲区分配模块(buf_assign)、任务调度模块(task_sch)、双缓冲区模块(double_buffer)组成。
缓冲区分配模块(buf_assign)从数据访问单元送入的CSCI格式的图数据中分析该列数据(数据访问单元送入的列数据)的列标识获知该列待处理的数据对个数,即列标识数据对的value值,并根据双缓冲区模块(double_buffer)发来的缓冲区状态信息把待处理的该列数据发送给双缓冲区模块(double_buffer),当所有缓冲区全部占用,即为“满”时,则向数据访问单元(DAU)发送停止读取信号;
任务调度模块(task_sch)根据混合粒度处理单元(MGP)发来的处理元状态信号以及双缓冲区模块(double_buffer)发来的缓冲区状态信息,把所有缓冲区中未调度数据(未送入混合粒度处理单元的数据)送入空闲且计算容量满足要求的处理元进行处理;
双缓冲区模块(double_buffer)由16组暂存容量不同的前后双缓冲区组成,每个缓冲区的容量说明如下。
缓冲区名称中f、b表示前缓冲区、后缓冲区,0~7表示0号缓冲区到7号缓冲区,8~11、12~13含义类似。
当缓冲区收到CSCI格式的图数据时,根据该列数据的数据对个数确定暂存于哪个缓冲区,每个缓冲区设有前后两个,以乒乓形式交替使用,初始时,缓冲区状态全部为“空”,数据存入前缓冲区,即buf*_f,当相同容量的前缓冲区全部被占用,则新收到数据存入当前容量范围的后缓冲区,即buf*_b,若容量小的前后缓冲区全部被占用且容量较大的缓冲区空闲,则可把小数目数据存入大容量缓冲区。
举例说明,当数据对个数不超过64时,在buf0_f~buf7_f中依次存放,若buf0_f已存有数据且未被读走,则存入buf1_f,若buf1_f占用,则存入buf2_f,以此类推,当buf0_f~buf7_f全部占用,则按序buf0_b~buf7_b中依次存放,若buf0_f~buf7_f,buf0_b~buf7_b全部占用,则可把数据对个数不超过64的数据暂存于buf8_f~buf11_f,以此类推。
由于存储器数据带宽有限,当CSCI格式的图数据的一列数据超过存储器数据带宽时,则需分次存入一个缓冲区,直至存储的一列数据全部暂存,该缓冲区状态置为“满”,并通知任务调度模块(task_sch)可以调度该列数据,数据调度完成后,该缓冲区状态置为“空”,同时发送状态至缓冲区分配模块(buf_assign);当图数据中一列数据对个数超过1024,即缓冲区最大容量时,可分批处理。
buf0~7_f,buf0~7_b:64个数据对;
buf8~11_f,buf8~11_b:128个数据对;
buf12~13_f,buf12~13_b:256个数据对;
buf14_f,buf14_b:512个数据对;
buf15_f,buf15_b:1024个数据对。
参照图5,混合粒度处理单元(MGP)由辅助电路模块(aux_cell)、处理元阵列(PEA)组成。
辅助电路模块(aux_cell),用于根据处理元状态将结果产生单元(RGU)输入的活跃顶点数据对与调度器(SCD)输入的对应的CSCI格式的图数据送到处理元阵列相应的空闲处理元。
上述的跃顶点数据对可理解为:BFS/SSSP的计算结果是给每个顶点产生一个数值,以代表该顶点在图中的深度或距离,中间结果也是如此,只是后续迭代过程中该值会被更新。因此称为活跃顶点数据对。
处理元阵列(PEA)由16个不同容量的处理元PE组成,16个处理元可并行工作,处理元计算容量如下(这里处理的数据对不含列标识数据对)。
处理元(PE)收到辅助电路模块(aux_cell)输入的活跃顶点数据对与CSCI格式的图数据后根据控制电路CTR送入的应用类型对其(即输入的活跃顶点数据对与CSCI格式的图数据)进行计算。
当应用类型为广度优先搜索(BFS)时,处理元(PE)将活跃顶点数据对的value值加1赋给CSCI图数据每个数据对的value;
当应用类型为单源最短路径(SSSP)时,处理元(PE)将活跃顶点数据对的value与CSCI图数据每个数据对的value相加后用于更新CSCI格式中图数据每个数据对的value;
计算结果输出到结果产生单元(RGU),计算结果包含的数据对最大数目与每个处理元(PE)可同时处理的数据对数目相同。
PE0~7:可同时处理64个数据对;
PE8~11:可同时处理128个数据对;
PE12~13:可同时处理256个数据对;
PE14:可同时处理512个数据对;
PE15:可同时处理1024个数据对。
参照图6,结果产生单元(RGU)由操作模块(OPC)、比较器(CMP)、片上结果暂存器(cur_rlt)组成。
结合图7和图6,操作模块(OPC)由15个操作单元(op_cell)组成的8路4级流水线树构成。
每个op_cell的计算容量与输入数据包含的数据对最大数目相同;
每个op_cell根据控制电路(CTR)输入的应用类型对(MGP)输入的中间数据进行计算,对于广度优先搜索(BFS)和单源最短路径(SSSP)进行的计算都是比较操作,即将行索引相同的两路输入数据对的value进行比较,将较小值作为该行索引对应的新value输出给下一级,直至从最后一级op_cell输出,然后输入到比较器(CMP);
比较器(CMP)根据操作模块(OPC)输入的数据,逐一按照每个数据对的行索引从片上结果暂存器(cur_rlt)中读取该行索引对应的上次value值,并与输入的当前value比较,如果当前value比上次value不小,则不执行任何操作,直接进行下一个行索引的计算,如果当前value更小,则更新该行索引在片上结果暂存器(cur_rlt)中的value值,并将该行索引对应顶点置为活跃顶点,将该行索引输出到数据访问单元(DAU),将行索引及value数据对输出到混合粒度处理单元(MGP);片上结果暂存器(cur_rlt)用于暂存每各顶点的深度(depth)(对于广度优先搜索BFS)和距离(distance)(对于单源最短路径(SSSP))。
本发明已经在“混合粒度并行图计算加速器”的项目中加以采用,经过实际验证,结果表明该电路的功能满足预期目标,可以可靠工作,实现了本发明目的。
需要理解的是,以上对本发明的具体实施例进行的描述只是为了说明本发明的技术路线和特点,其目的在于让本领域内的技术人员能够了解本发明的内容并据以实施,但本发明并不限于上述特定实施方式。凡是在本发明权利要求的范围内做出的各种变化或修饰,都应涵盖在本发明的保护范围内。
Claims (9)
1.一种并行的图计算加速器结构,其特征在于,包括:
存储器、预处理电路、控制电路、数据访问单元、调度器、混合粒度处理单元和结果产生单元;
其中,所述预处理电路,用于将待处理的邻接稀疏矩阵图数据转换成独立稀疏列压缩CSCI格式、以及CSCI中列标识副本存入所述存储器;
所述控制电路,用于接收所述预处理电路在存储器中存储完毕之后发送的转换就绪指示信号,根据主机发送的图计算应用类型控制所述数据访问单元、混合粒度处理单元、结果产生单元的操作,以及将主机发送的应用类型一的根顶点索引或应用类型二的源顶点索引发送所述数据访问单元;
所述数据访问单元,用于从所述存储器中读取所述CSCI的图数据和列标识,并根据所述根顶点索引、源顶点索引或结果产生单元传送的活跃顶点索引计算指定顶点在存储器中的物理地址以进行数据访问,以及将读取的数据传输到调度器;
所述调度器,用于将CISI中列标识指示的非零元素个数暂存,并根据所述混合粒度处理单元内处理元的状态信号,将暂存的数据分配到混合粒度处理单元内的处理元进行处理;
所述混合粒度处理单元,用于根据控制电路内的应用类型和结果产生单元的活跃顶点数据对调度器内暂存的数据进行并行处理,并将处理后的中间数据传输结果产生单元;
所述结果产生单元,用于根据控制电路内的应用类型对中间数据进行处理,以及将处理过程的活跃顶点索引发送数据访问单元,将处理后的最终结果存储;
其中,应用类型一是广度优先搜索应用BFS类型,应用类型二是单源最短路径应用SSSP类型。
2.根据权利要求1所述的图计算加速器结构,其特征在于,所述控制电路包括:主机接口组件和控制逻辑组件;
所述主机接口组件,用于接收主机发送的应用类型、应用类型一的根顶点索引和应用类型二的源顶点索引;
所述控制逻辑组件,用于接收所述预处理电路发送的转换就绪指示信号,将所述根顶点索引或源顶点索引发送所述数据访问单元,将应用类型发送混合粒度处理单元和结果产生单元,并启动图计算加速器内各模块开始工作。
3.根据权利要求1所述的图计算加速器结构,其特征在于,所述数据访问单元包括:用户逻辑组件、地址计算模块和列标识暂存器;
所述列标识暂存器,用于存储CSCI中图数据的列标识;
所述地址计算模块,用于根据所述控制电路发送的和结果产生单元输入的顶点索引,结合所述列标识暂存器中各列非零元素数据、每行存储数据的数目计算当前活跃顶点i对应数据在存储器中的物理地址;
所述用户逻辑组件,用于从所述存储器中读取所述列标识暂存在所述列标识暂存器中;根据所述地址计算模块计算的地址从所述存储器中读取相应的活跃顶点对应的数据,并向所述调度器发送读取的数据;
以及,再接收调度器发送的暂停读取信号后,停止从所述存储器中读取数据;
所述用户逻辑组件,还用于在所述调度器发送的暂停读取信号失效后再次读取数据。
4.根据权利要求1至3任一所述的图计算加速器结构,其特征在于,调度器包括:缓冲区分配模块、任务调度模块和双缓冲区模块;
缓冲区分配模块,用于分析从数据访问单元传送的列数据的列标识对应的数据对,并根据双缓冲区模块传送的缓冲区状态信息把该列标识对应的图数据发送给双缓冲区模块,当双缓冲区模块中所有缓冲区全部占用时,则向数据访问单元发送停止读取信号;
任务调度模块,用于根据混合粒度处理单元传送的处理元状态信号以及双缓冲区模块传送的缓冲区状态信息,把所有缓冲区中未调度数据送入空闲且计算容量满足要求的处理元进行处理;
双缓冲区模块包括:多组暂存容量不同的前后双缓冲区组成;
所述双缓冲区模块,用于在所有缓冲区状态置为“满”时,通知任务调度模块调度缓冲区缓存的图数据,数据调度完成的缓冲区状态置为“空”,并发送缓冲区状态至缓冲区分配模块。
5.根据权利要求1至3任一所述的图计算加速器结构,其特征在于,混合粒度处理单元包括:辅助电路模块和处理元阵列;
所述辅助电路模块,用于根据处理元阵列中各处理元状态将结果产生单元输入的活跃顶点数据对与调度器输入的对应的CSCI传输到处理元阵列中相应的空闲处理元;
处理元阵列由多个不同容量的处理元PE组成,多个处理元并行工作;
每一处理元收到辅助电路模块输入的活跃顶点数据对与CSCI后,根据控制电路传输的应用类型对活跃顶点数据对与CSCI进行计算。
6.根据权利要求5所述的图计算加速器结构,其特征在于,每一个处理元,具体用于:
当控制电路传输的应用类型为广度优先搜索时,将活跃顶点数据对的value值加1赋给CSCI中每个数据对的value;
当应用类型为单源最短路径时,将活跃顶点数据对的value与CSCI中每个数据对的value相加后用于更新CSCI中每个数据对的value;
处理元的计算结果输出到结果产生单元,计算结果包含的数据对最大数目与每个处理元同时处理的数据对数目相同。
7.根据权利要求1至3任一所述的图计算加速器结构,其特征在于,结果产生单元包括:操作模块、比较器和片上结果暂存器;
操作模块包括:15个操作单元组成的8路4级流水线树;
每个操作单元的计算容量与输入数据包含的数据对最大数目相同;
每一操作单元,用于根据控制电路输入的应用类型对混合粒度处理单元输入的中间数据进行计算;
所述比较器,用于根据所述操作模块输入的数据,逐一按照每个数据对的行索引从片上结果暂存器中读取操作单元处理的行索引对应的上次value值,并与输入的当前value值比较,如果当前value值比上次value值不小,则不执行任何操作,直接进行下一个行索引的计算,如果当前value值更小,则更新操作单元处理的行索引在片上结果暂存器中的value值,并将该行索引对应顶点置为活跃顶点,将该行索引输出到数据访问单元,将行索引及value值数据对输出到混合粒度处理单元;
片上结果暂存器,用于暂存每个顶点的深度/距离。
8.根据权利要求7所述的图计算加速器结构,其特征在于,
每一操作单元,具体用于:对于应用类型一和应用类型二进行的计算都是比较操作,即将行索引相同的两路输入数据对的value值进行比较,将较小值作为该行索引对应的新value输出给下一级,直至从最后一级op_cell输出,然后输入到比较器。
9.根据权利要求3所述的图计算加速器结构,其特征在于,
所述地址计算模块,还用于根据CSCI在存储器中的基地址BaseAddr,依照公式一确定所述物理地址PhyAddr;
公式一:PhyAddr=BaseAddr+(nnz_c0+nnz_c1+...+nnz_ci)/RowSize;
nnz_ci表示独立稀疏邻接矩阵中对应列的非零元素数目,i为列索引;
RowSize表示存储器每行存储数据的字节数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910107937.1A CN109949202B (zh) | 2019-02-02 | 2019-02-02 | 一种并行的图计算加速器结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910107937.1A CN109949202B (zh) | 2019-02-02 | 2019-02-02 | 一种并行的图计算加速器结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109949202A CN109949202A (zh) | 2019-06-28 |
CN109949202B true CN109949202B (zh) | 2022-11-11 |
Family
ID=67007557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910107937.1A Active CN109949202B (zh) | 2019-02-02 | 2019-02-02 | 一种并行的图计算加速器结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109949202B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598175B (zh) * | 2019-09-17 | 2021-01-01 | 西安邮电大学 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
CN111737540B (zh) * | 2020-05-27 | 2022-11-29 | 中国科学院计算技术研究所 | 一种应用于分布式计算节点集群的图数据处理方法和介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2546019B (en) * | 2012-11-02 | 2017-08-30 | Imagination Tech Ltd | Geometry processing method for 3-D rendering |
CN104915427B (zh) * | 2015-06-15 | 2018-01-05 | 华中科技大学 | 一种基于广度优先遍历的图处理优化方法 |
US20170177361A1 (en) * | 2015-12-22 | 2017-06-22 | Michael Anderson | Apparatus and method for accelerating graph analytics |
CN108122189B (zh) * | 2016-11-29 | 2021-11-30 | 三星电子株式会社 | 硬件中的顶点属性压缩和解压缩 |
US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
CN106951961B (zh) * | 2017-02-24 | 2019-11-26 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
US10540398B2 (en) * | 2017-04-24 | 2020-01-21 | Oracle International Corporation | Multi-source breadth-first search (MS-BFS) technique and graph processing system that applies it |
CN107341765B (zh) * | 2017-05-05 | 2020-04-28 | 西安邮电大学 | 一种基于卡通纹理分解的图像超分辨率重建方法 |
CN107392838B (zh) * | 2017-07-27 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 基于OpenCL的WebP压缩并行加速方法及装置 |
CN108563808B (zh) * | 2018-01-05 | 2020-12-04 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器系统的设计方法 |
CN109003222B (zh) * | 2018-06-29 | 2020-07-24 | 中国科学技术大学 | 一种异步高能效图计算加速器 |
-
2019
- 2019-02-02 CN CN201910107937.1A patent/CN109949202B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109949202A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109919826B (zh) | 一种用于图计算加速器的图数据压缩方法及图计算加速器 | |
CN110928654A (zh) | 一种边缘计算系统中分布式的在线任务卸载调度方法 | |
US8676874B2 (en) | Data structure for tiling and packetizing a sparse matrix | |
US8762655B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
Ozfatura et al. | Gradient coding with clustering and multi-message communication | |
CN109949202B (zh) | 一种并行的图计算加速器结构 | |
CN110209348B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN105808328A (zh) | 任务调度的方法、装置和系统 | |
US20220004873A1 (en) | Techniques to manage training or trained models for deep learning applications | |
CN112925637A (zh) | 用于一边缘运算网络的负载平衡装置及方法 | |
CN109086879B (zh) | 一种基于fpga的稠密连接神经网络的实现方法 | |
CN115168281B (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN109598250A (zh) | 特征提取方法、装置、电子设备和计算机可读介质 | |
CN108647780B (zh) | 面向神经网络的可重构池化操作模块结构及其实现方法 | |
CN116610731B (zh) | 一种大数据分布式存储方法、装置、电子设备及存储介质 | |
CN108304261B (zh) | 一种基于6D-Torus网络的作业调度方法和装置 | |
CN102722410A (zh) | 执行程序的方法、服务器、移动终端及系统 | |
Barger et al. | k-means for streaming and distributed big sparse data | |
CN117061365A (zh) | 一种节点选择方法、装置、设备及可读存储介质 | |
CN117236453A (zh) | 量子纠缠资源调度方法、装置及电子设备 | |
Erdeljan et al. | IP core for efficient zero-run length compression of CNN feature maps | |
CN108733739B (zh) | 支持集束搜索的运算装置和方法 | |
Fong et al. | A cost-effective CNN accelerator design with configurable PU on FPGA | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及系统 | |
WO2022001317A1 (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 |