一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向超图处理的硬件加速器及其运行方法与流程

2022-11-14 00:28:56 来源:中国专利 TAG:


1.本发明涉及计算机硬件加速器技术领域,尤其涉及一种面向超图处理的硬件加速器及其运行方法。


背景技术:

2.超图结构是对只能表示实体间双边关系的普通图结构的一种高维扩展,超图结构能够原生地表示现实中普遍存在的多个实体之间的复杂多边关系,并且允许数据分析师从海量实体关系数据中获取有价值的信息。但是,访存局部性的问题极大地限制了超图处理的性能。由于对邻接顶点和邻接超边的不规则的访问模式,导致时间局部性较差;由于顶点和超边之间复杂缠绕的关联关系,难以设计一种最优的调度策略,从而不能充分发挥潜在的空间局部性,导致空间局部性较差。现有的基于通用架构以及专用硬件的超图处理框架虽然在技术上取得一定进展,但远远没有解决超图处理中出现的访存局部性的问题。
3.与传统的以任务为中心的计算模式不同,以任务为中心的模式根据需要执行的任务加载所需的数据并执行相应的计算,以数据为中心的模式根据被加载到高速片上缓存的数据,触发所有与之相关联的计算任务并得到中间结果,待所有需要处理的数据被加载并触发任务结束后,通过对所有中间结果执行合并操作得到最终结果。以数据为中心的计算模式能够更加充分地利用应用中潜在的数据局部性,进而有效地减少冗余的内存访问。
4.与cpu和gpu等面向非特定应用场景设计的通用处理器不同,本技术领域特定的硬件加速器根据应用特殊的计算和访存特点,针对性地设计和优化了专门的数据通路和内存系统,提高了特定计算任务的执行效率。fpga是一种常用的硬件加速器设计和实现的目标平台,fpga作为一种可以对硬件逻辑进行重编程的硬件平台,虽然能够实现的时钟频率较低且能够使用的硬件资源数量受限于具体的fpga硬件,但是其具有的高灵活性使得fpga非常适用于快速开发、实现和优化迭代硬件加速器。
5.例如,公开号为cn108563808a的专利文献,其公开了一种基于fpga的异构可重构图计算加速器系统的设计方法,整个加速器系统包括pc和fpga两大异构模块,具体步骤:首先加载启动fpga所需要的驱动模块,将fpga的pcie dma等设备打开;根据所需要处理的图数据的顶点数和边数进行图计算加速器引擎的选择;在选择好加速器引擎之后对图数据进行预处理;将预处理好的图数据通过pcie dma传输给fpga开发板的板载ddr;启动加速器从板载ddr指定的地址开始读取图数据;控制器将图数据分配给不同的处理单元进行处理和计算;在各个处理单元计算和处理完数据之后,将结果发送给计算结果收集模块;收集模块将结果写回板载ddr,在整个图数据处理完之后,pc将结果从板载ddr中读取出。
6.基于fpga的硬件加速器设计方案通常采用类似的做法,即先在主机端准备好需要处理的数据,并将其发送到fpga板载ddr存储器中;然后启动加速器逻辑对数据进行处理;待处理结束后,主机端将计算结果从fpga板载ddr读取回主机端内存,得到计算结果。
7.基于fpga设计面向超图处理的硬件加速器解决方案虽然能够收益于专用的数据通路和内存子系统,但是这过度理想化了对片外内存资源的充分利用。实际上,现代超图处
理的工作负载通常是非常不规则的,因为顶点和超边之间的连接关系错综复杂。使用简单的调度策略进行超图处理,导致缓冲存储器的命中率很低,大部分数据从片外内存读取到片上缓存后还未得到重用就被新的数据所替换。超图处理中出现的这些频繁缓存替换以及低片上缓存命中率严重影响访存效率,会导致超图处理性能极大地受限于访存性能,而由于较差的数据局部性,缓冲存储器不仅未能提高访存性能,还会带来大量的额外能耗开销。综上,本发明旨在提供一种能够克服上述缺陷的面向超图处理的执行模型以及一种部署该执行模型的基于fpga的硬件加速器设备。
8.此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。


技术实现要素:

9.本技术要解决的技术问题是:如何充分利用超图处理的数据局部性。
10.针对现有技术之不足,本发明提供一种面向超图处理的以数据为中心的硬件加速器,所述硬件加速器至少包括:
11.数据加载器:在预设有以数据为中心的加载-触发-合并执行模型的情况下,根据超图数据组织和超图分块的顺序,依次从片外存储器中读取超图分块数据;
12.地址翻译器:根据已加载数据的优先级顺序将超图数据部署到处理器的私有寄存器中和/或缓冲存储器中,并且记录相应的偏移量信息至哈希表中;
13.任务触发器:根据已加载数据生成计算任务,并将其调度到所述处理器;
14.处理器:包括至少一个处理单元,所述处理单元接收所述计算任务并执行;
15.合并器:基于数据优先级顺序将中间结果调度到第一优先级数据合并单元或第二优先级数据合并单元上以执行中间结果合并操作。
16.本发明提供了能够充分利用超图处理算法的数据局部性的执行模型。通过高效的任务调度和基于优先级的多级数据缓存机制,充分利用了应用的数据局部性,减少了不必要的内存访问,从而提高计算的执行效率。
17.优选地,合并器还包括激活单元,在所述中间结果调度到所述第一优先级数据合并单元进行合并操作的情况下,所述第一优先级数据合并单元从处理单元的中读取数据,基于合并树完成中间结果合并,其中,所述合并操作被延迟到在当前超图分块全部处理结束后执行;或者,在所述中间结果调度到所述第二优先级数据合并单元进行合并的情况下,所述第二优先级数据合并单元从处理单元中获取中间数据,基于排序合并网络完成中间结果合并;激活单元根据顶点或超边数据的变化情况修改其激活状态;其中,合并操作与计算任务同时执行。
18.优选地,所述地址翻译器包括至少一个用于保存映射关系的哈希表和用于生成映射关系的私有寄存器存储的偏移量分配器;在地址翻译器接收到第一优先级数据中的顶点索引值后,所述地址翻译器从所述哈希表中查找对应表项,若表项未初始化,则所述偏移量分配器生成新的私有寄存器地址并将其分配给第一优先级顶点,使得第一优先级数据中的顶点数据被保存到私有寄存器的相应位置,若表项已初始化,则所述地址翻译器直接返回
查询得到的映射关系。
19.为保证硬件加速器能够无冲突地高并行执行,设计了基于优先级的多级缓存机制以及异构的合并机制。对于计算任务较多的第一优先级的顶点和超边数据,将其进一步缓存到所有处理单元的私有寄存器中,避免了多个处理单元处理同一顶点或超边时对片上共享缓存的访问冲突,保证硬件加速器处理单元的高并行执行;另外,针对不同优先级的数据特点设计了不同的合并机制,通过将第一优先级数据的合并操作延迟到所有计算结束以后,减少了合并的计算量和可能出现的冲突,保证了整个架构的高效执行。
20.优选地,所述硬件加速器还包括缓冲存储器,所述缓冲存储器包括顶点数据存储器、超边数据存储器和二部边fifo队列;所述数据加载器从片外内存中将选定的激活块加载到片上,基于数据属性将超图分块数据发送至所述缓冲存储器保存,其中,所述数据加载器将顶点数据加载到顶点存储器中,将超边数据加载到超边存储器中,将二部边数据流式加载到二部边先进先出队列中,激活信息在数据加载过程中用于对数据进行筛选。
21.优选地,所述任务触发器从二部边先进先出队列中获取二部边并生成对应的计算任务。
22.优选地,在获取到二部边后,所述任务触发器从地址翻译器获取对应顶点和超边的存储偏移量或地址,将二部边与所获地址打包并分发到当前空闲的处理单元进行处理。
23.优选地,所述第一优先级数据合并单元至少包括合并树、结果缓冲队列和结果写回单元;待当前超图分块的所有计算任务全部执行结束后,所述第一优先级数据合并单元从处理单元的私有寄存器中逐个读取数据输入到合并树中;中间数据的最终合并结果被暂存到输出结果缓存队列中,并且由该缓冲区向结果写回单元提供数据以便写回到片上共享缓存中;中间结果缓冲区逐个向所述结果写回单元提供数据。
24.优选地,第二优先级数据合并单元至少包括排序合并网络、输入缓冲队列、输出缓冲队列和结果写回单元,处理单元处理第二优先级数据的输出被保存到第二优先级数据合并单元的输入缓冲队列中,以便向排序合并网络提供数据;输入缓冲队列根据排序合并网络的规模,每次向合并网络中输入一定数量的中间结果,所述排序合并网络以流水线的形式对输入的中间结果进行排序和合并操作,使得输出的结果有序且将索引相同的值进行合并;所述排序合并网络的输出结果被保存到输出缓冲队列中,由所述缓冲队列向所述结果写回单元提供数据以便写回到片上共享缓存中。
25.为充分利用超图处理算法的数据局部性,对超图的重叠特征以及处理的计算模式进行分析,本发明设计了高效的超图处理执行模型,采用以数据为中心的计算模式,根据已加载到片上缓存中的数据决定计算任务的执行顺序,确保加载到片上缓存中的数据能够得到充分的重用。
26.本发明还提供一种面向超图处理的硬件加速器的运行方法,所述方法至少包括:在预设有以数据为中心的加载-触发-合并执行模型的情况下,根据超图数据组织和超图分块的顺序,依次从片外存储器中读取超图分块数据;根据已加载数据的优先级顺序将超图数据部署到处理器的私有寄存器和/或缓冲存储器中,并且记录相应的偏移量信息至哈希表中;根据已加载数据生成计算任务,并将其调度到所述处理器;处理器包括至少一个处理单元,所述处理单元接收所述计算任务并执行;基于数据优先级顺序将中间结果调度到第一优先级数据合并单元或第二优先级数据合并单元上以执行中间结果合并操作。
27.优选地,所述方法还包括:在硬件加速器运行之前,所述硬件加速器根据输入的超图数据和超图算法进行初始化。
28.本发明的硬件加速器的运行方法,为充分利用超图处理潜在的数据局部性以获得更好的超图处理性能,对超图的重叠特性以及处理的计算模式进行分析,设计了高效的超图处理执行模型,采用以数据为中心的计算模式,根据已加载到片上缓存中的数据决定计算任务的执行顺序;并且根据数据的可重用程度为数据设置了优先级,对第一优先级数据进行了进一步的局部缓存,避免了多个处理单元并行执行的过程中可能存在的数据冲突,确保硬件加速器能够高并行执行。
附图说明
29.图1是本发明优选的面向超图计算的硬件加速器的硬件架构设计图;
30.图2是本发明优选的地址翻译器模块的工作原理示意图;
31.图3是本发明优选的异构合并器模块的工作原理示意图;
32.图4是本发明优选的第一优先级数据合并单元的工作原理示意图;
33.图5是本发明优选的第二优先级数据合并单元的工作原理示意图;
34.图6是本发明优选的硬件加速器设备的工作原理示意图。
35.附图标记列表
36.1:数据加载器;2:分块表;3:超图分块数据;4:地址翻译器;5:缓冲存储器;6:任务触发器;7:处理器;8:处理单元;9:合并器;10:合并树;11:排序合并网络;12:排序合并单元;13:结果写回单元;31:顶点数据;32:超边数据;33:二部边数据;34:激活信息;41:哈希表;42:私有寄存器偏移量分配器;43:私有寄存器中的偏移量;44:共享缓存中的偏移量;45:初始化标记位;51:顶点数据存储器;52:超边数据存储器;53:二部边先进先出队列;81:计算逻辑单元;82:私有寄存器;91:第一优先级数据合并单元;92:第二优先级数据合并单元;93:激活单元;101:合并单元;121:数值合并单元;122:排序单元。
具体实施方式
37.下面结合附图进行详细说明。
38.为了便于理解,将本发明中的技术用语进行说明解释。
39.加载-触发-合并(ltr)执行模型:将超图根据顶点和超边索引划分为若干个子超图,采用以数据为中心的计算模式,每次加载一个子超图,触发完成与之相关的所有计算任务,依次执行每个子超图。
40.第一优先级顶点/超边数据:超图中的顶点/超边数据根据计算过程中多个计算单元之间可能出现的更新冲突,被划分为第一优先级数据和第二优先级数据,优先级与顶点/超边的度数紧密相关,实际处理中按顶点/超边的度数对优先级进行划分,将度数最高的一定比例的顶点/超边数据认定为第一优先级数据。将度数次高的一定比例的顶点/超边数据认定为第二优先级数据。
41.顶点数据:超图中的顶点具有的属性值数据,包括但不限于顶点入度、顶点出度等与超图拓扑结构相关的固有属性,以及与超图算法相关的顶点计算属性等。
42.超边数据:超图中的超边具有的属性值数据,包括但不限于超边入度、超边出度等
与超图拓扑结构相关的固有属性,以及与超图算法相关的超边计算属性等。二部边数据:超图中某个顶点与某个与之相关联的超边之间的关联关系属性,包括但不限于描述二者之间关联关系强度的权重等。
43.针对现有超图计算系统普遍具有的数据局部性差而导致的超图处理性能受限的问题,本发明提供一种面向超图处理的硬件加速器设备。本发明的硬件加速器通过一种新的执行模式,让超图处理中潜在的数据局部性能够得到充分的利用,进而充分利用片上顶点高速缓存51,避免计算逻辑长时间处于等待数据的停滞状态,最大化硬件执行效率,提高计算性能。
44.如图1所示,硬件加速器至少包括数据加载器1、地址翻译器4、缓冲存储器5、任务触发器6、处理器7以及合并器9。优选地,硬件加速器的各部件均由专用硬件电路实现,并且使用专用数据通路加以连接。
45.例如,数据加载器1为能够实现本发明的数据加载功能的专用集成电路。地址翻译器4为能够实现本发明的地址翻译功能的专用集成电路。缓冲存储器5为能够实现本发明的缓冲存储功能的存储设备。存储设备例如是具有存储功能的专用集成芯片、磁盘、硬盘或存储介质。任务触发器6为能够实现本发明的任务触发功能的专用集成电路。合并器9为能够实现本发明的数据合并功能的专用集成电路。
46.上述各部件在fpga平台上进行实现。地址翻译器4包括一个保存映射关系的哈希表41和一个生成与私有寄存器存储存在映射关系的偏移量分配器42。
47.缓冲存储器5包括顶点数据存储器51、超边数据存储器52和二部边先进先出队列53。
48.处理器7包括至少一个处理单元8。例如,处理单元8的设定数量可以是16。每个处理单元8由计算逻辑单元81和私有寄存器82组成。计算逻辑单元81和私有寄存器82的具体数量不限,可由需求来确定数量。计算逻辑单元81用于对加载到片上的高速缓存空间中的超图数据进行处理。私有寄存器82用于保存第一优先级顶点/超边数据,从而为计算逻辑单元81以更快的速度和更低的延迟提供数据的读写操作。
49.合并器9由第一优先级数据合并单元91、第二优先级数据合并单元92和激活单元93组成。第一优先级数据合并单元91、第二优先级数据合并单元92和激活单元93彼此之间分别建立数据传输关系。第一优先级数据合并单元91针对第一优先级数据进行设计。第二优先级数据合并单元92针对第二优先级数据进行设计。激活单元93用于对顶点或超边的激活信息进行管理。
50.例如,本发明的硬件加速器设备能够具有16个处理单元。每个处理单元具有16kb私有寄存器空间,所有处理单元8拥有共享的4mb顶点存储器、4mb超边存储器和32kb二部边先进先出队列,共计高达8mb缓冲存储器空间。
51.如图1所示,数据加载器1与地址翻译器4通过线路连接,以传输数据信息。数据加载器1与合并器9中的激活单元93通过线路连接,使得数据加载器1从合并器9中的分块表2中读取信息。数据加载器1分别与顶点数据存储器51、超边数据存储器52和二部边先进先出队列53通过线路连接并建立数据传输关系。顶点数据存储器51、超边数据存储器52和二部边先进先出队列53通过线路与任务触发器6连接。地址翻译器4通过线路与任务触发器6连接。地址翻译器4通过线路与合并器9中的第一优先级数据合并单元91连接以建立信息传输
关系。合并器9与顶点数据存储器51、超边数据存储器52通过线路分别连接并建立数据传输关系。
52.处理器7分别与顶点数据存储器51、超边数据存储器52、任务触发器6、合并器9通过线路连接并建立信息传输关系。数据加载器1与硬件加速器的数据输入端口连接,以便接收超图分块数据3。
53.优选的,数据加载器1用于将超图数据从片外内存读取到缓冲存储器中,以备后续处理。
54.具体的,数据加载器1配置为按照如下方式将超图数据读取到片上。
55.s11:数据加载器1从分块表2中提取一个激活的块,作为当前轮需要计算的超图分块。
56.分块表2记录了每个分块的激活信息34,对于非激活块,当前轮无需进行计算。对于激活顶点较少的算法或某些算法中激活顶点较少的阶段,通过片上的分块表对需要加载的分块进行预先的筛选,能够有效降低数据加载量。
57.s12:数据加载器1从片外内存中将选定的激活块加载到片上,根据不同的数据属性,将数据保存到对应的片上缓存中。
58.具体的,顶点数据31被加载到顶点存储器51中,超边数据32被加载到超边存储器52中,二部边数据33被流式加载到二部边先进先出队列53中,激活信息34在数据加载过程中用于对数据进行筛选。
59.s13:数据加载器1通过与地址翻译器4进行交互,为第一优先级数据在处理单元8的私有寄存器82中分配空间,并将该部分数据副本进一步保存到处理器8的私有寄存器82中。
60.优选的,如图2所示,地址翻译器4至少包括一个保存映射关系的哈希表41和一个生成与私有寄存器存储存在映射关系的偏移量分配器42。偏移量分配器42将映射关系发送至哈希表41中保存。哈希表41中的每个条目由私有寄存器中的偏移量43、共享缓存中的偏移量44以及初始化标记位45组成。
61.私有寄存器中的偏移量43用于指明与该条目对应的顶点或超边在私有寄存器82中保存的位置。共享缓存中的偏移量44用于指明与该条目对应的顶点或超边在缓冲存储器5中保存的位置。初始化标记位45用于指明该条目当前是否已被初始化为有效数据。地址翻译器4能够完成对地址映射的查询和生成功能。优选的,地址翻译器4的工作流程至少包括如下步骤:
62.s21:地址翻译器4接受来自其他模块的请求,并从哈希表中查询到相应的表项。
63.具体的,输入请求是一个顶点或超边索引,以输入顶点索引为例,根据哈希表的结构,将索引拆分成表id和行id,从而具体定位到一条哈希表项。
64.s22:根据哈希表项的初始化标识位确定当前请求中地址翻译器4需要执行的功能。
65.具体的,如果该表项未初始化,则需要生成一个新的映射关系,否则,如果该表项已初始化,则直接返回查询得到的映射关系。
66.s23:对于未初始化表项,地址翻译器4需要生成一个新的映射关系。
67.具体的,私有寄存器82存储由偏移量分配器42给出的一个新的私有寄存器偏移地
址,使用该地址生成一个新的哈希表项,并且保存到哈希表41中。
68.s24:将得到的映射关系返回给请求者。
69.优选的,如图3所示,中间结果的合并根据对应数据的优先级不同,使用两种不同的合并单元进行处理,分别为第一优先级数据合并单元91和第二优先级数据合并单元92进行处理。
70.优选的,合并器9的工作流程至少包括如下步骤:
71.s31:处理器7中的所有处理单元8并行执行由任务触发器6分配的任务。
72.具体的,一个任务执行的结果会更新一个顶点或超边的值,对于第一优先级数据,其在每个处理单元8的私有寄存器82中保存有一份副本。由于合并操作通常都是加法求和、取最大或最小值等运算,这些运算具有允许先部分合并,然后由部分合并结果进一步合并得到最终结果的特点,因此第一优先级数据的计算全部在处理单元8内完成,计算结果不对外输出,而是直接保存在私有寄存器82中。这样每个私有寄存器82中保存的都是部分中间结果,而最终的计算结果可以有这些中间结果进一步合并得到。对于第二优先级数据,其不会导致严重的处理单元间的冲突,因此每个任务的计算结果直接由处理单元输出到合并逻辑中,与其他中间结果进行合并操作。
73.s32:两种针对不同优先级数据的合并器对处理单元计算得到的中间结果进行合并。
74.s321:第一优先级数据合并单元91由与当前分块对应计算全部执行完成的信号触发,二部边先进先出队列53中的二部边全部被任务触发器6消耗且所有的处理单元8均处于空闲状态时,第一优先级数据合并单元91启动,从所有私有寄存器82中逐个读取数据进行合并操作。
75.s322:第二优先级数据合并单元92由处理单元8输出的第二优先级输出结果触发,与系统中其他部件并行执行,第二优先级数据合并单元92对输入的中间结果进行合并操作。
76.优选的,如图4所示,第一优先级数据合并单元91用于对保存在处理单元私的有寄存器82中的第一优先级数据进行合并操作。第一优先级数据至少包括一个合并树10、一个结果缓冲队列和一个结果写回单元13。优选的,如图3所示,第一优先级数据合并单元91的工作流程至少包括如下步骤:
77.s41:待当前超图分块的所有计算任务全部执行结束后,第一优先级数据合并单元91开始执行,从每个处理单元的私有寄存器82中逐个读取数据输入到合并树10中。
78.具体的,合并树由一个完全二叉树构成,树中的每个节点是一个合并单元101,中间结果数据由私有寄存器以流水线的形式进行合并。
79.s42:中间数据的最终合并结果被暂存到输出结果缓存队列中,并由该缓冲区向结果写回单元13提供数据以便写回到片上共享缓存中。
80.s43:中间结果缓冲区逐个向结果写回单元13提供数据,结果写回单元13通过与地址翻译器4交互获得数据在片上共享存储器中的地址,进而执行写回操作。
81.优选的,如图5所示,第二优先级数据合并单元92用于对处理单元输出的第二优先级数据的中间结果进行合并操作。第二优先级数据至少包括一个由排序合并单元12组成的排序合并网络11、一个输入缓冲队列、一个输出缓冲队列和一个结果写回单元13。
82.优选的,第二优先级数据合并单元的工作流程至少包括如下步骤:
83.s51:每个处理单元8中的计算逻辑单元81将处理后的超图数据进行处理,并将第二优先级数据输出并保存到第二优先级数据合并单元92的输入缓冲队列中,以便向排序合并网络11提供数据。
84.s52:输入缓冲队列根据合并网络的规模,每次向合并网络中输入一定数量的中间结果,例如,如图5所示的4个中间结果,排序合并网络以流水线的形式对输入的中间结果进行排序和合并操作,使得输出的四个结果有序且将索引相同的值进行了合并。
85.具体的,排序合并网络11由若干个排序合并单元12组成。排序合并单元12由数值合并单元121和排序单元122组成。数值合并单元121忽略输入数据的索引信息,直接将两个输入数据的值进行合并,并选取其中一个索引作为结果的索引。排序单元122对两个输入的索引进行比较并排序输出。每个排序合并单元12包含两个输入和两个输出,若两个输入索引相同,则将二者的值进行合并,输出合并后的值和一个空值。若两个输入索引不同,若二者的索引满足预定顺序,则原样输出,否则,将二者位置颠倒后输出到两个输出端口。根据需要的排序合并网络的规模,给定一定数量的排序合并单元并按一定的互联网络结构进行连接,即可构成流水线多输入排序合并网络。
86.优选的,如图5所示,对于输入规模为4的排序合并网络,需要使用6个排序合并单元。按照如图5所示的网络结构进行连接并构成排序合并网络。对于该排序合并网络结构,每2个排序合并单元被分为一组,6个排序合并单元被分为3级,并且按流水线的方式并行执行排序任务,数据在流水线中逐级流动并被处理。此处输入规模为4仅作为示例描述排序合并网络的结构,该网络亦可被扩展到更大的输入规模。
87.s53:排序合并网络11的输出结果被保存到输出缓冲队列中,由该缓冲队列向结果写回单元13提供数据以便写回到片上共享缓存中。
88.为了便于理解,如图6所示,将本发明的硬件加速器设备的工作原理进行说明。
89.具体的,以数据为中心的硬件加速器设备的运行过程至少包括如下步骤:
90.s61:根据输入的超图数据和超图算法进行初始化;
91.具体的,初始化是指对超图(包括顶点、超边和二部边)进行预处理和分块。预处理主要包括根据顶点和/或超边的度数进行排序,以便将超图数据(包括顶点数据31和超边数据)划分为第一优先级数据和第二优先级数据,考虑到对整个超图进行排序的时间开销较大,亦可通过采样近似的方式对高第二优先级数据进行区分。分块是根据顶点和超边的数量将超图分为多个分块,具体计算过程中,每次仅加载一个分块到片上进行计算。图算法可以是广度优先搜索算法、单源最短路径算法以及pagerank算法等。
92.s62:构建以数据为中心的加载-触发-合并执行模型,使得所述数据加载器1根据所述超图数据组织和分块的顺序,依次从片外存储器中读取所述超图数据并保存到缓冲存储器中。
93.优选的,为充分利用超图处理的数据局部性,减少大量冗余的内存访问,设计了以数据为中心的加载-触发-合并执行模型。对于每一个超图分块,以数据为中心的计算模式通过充分利用已加载到片上的数据,提高了缓存数据的重用,减少了内存访问数量;在不同的超图分块之间,使用流水线的执行模式,重叠前一个分块的计算时间和下一个分块的访存时间,充分利用了硬件加速器的各部件,保证了整个架构的高效执行。
94.s63:地址翻译器4根据已加载数据的优先级将数据部署到所述处理单元的私有寄存器82中,并且记录相应的偏移量信息至哈希表41中。
95.具体的,地址翻译器4包括一个保存映射关系的哈希表41和一个生成与私有寄存器存储存在映射关系的偏移量分配器42。数据加载时,数据加载器1读取到一个第一优先级数据(以第一优先级顶点为例)时,将该顶点索引值发送给地址翻译器4,地址翻译器4从哈希表41中查找对应表项,此时该表项必然处于未初始化状态,偏移量分配器42生成一个新的私有寄存器地址,将其分配给该第一优先级顶点。接下来,该顶点数据31被保存到私有寄存器的相应位置,初始化后的表项被写回到哈希表中。
96.其中,第一优先级数据由数据加载器1同时发送至私有寄存器82和缓冲存储器5中进行存储。第二优先级数据由数据加载器1发送至缓冲存储器5中进行存储。偏移量信息被记录在地址翻译器4中的哈希表41中。
97.s64:任务触发器6根据已加载数据生成计算任务,并将其调度到所述处理器的某一个所述处理单元8进行执行。
98.优选的,任务触发器6从二部边先进先出队列53中获取二部边并生成对应的计算任务。具体的,任务触发器6获取到一条二部边后,从地址翻译器4获取对应顶点和超边的在片上缓存或私有寄存器中的存储偏移量或地址,将二部边与所获地址打包并分发到当前空闲的处理单元8进行处理。
99.s65:在所述处理器7执行计算任务的过程中,所述合并器9基于数据优先级将中间结果调度到所述第一优先级数据合并单元91或所述第二优先级数据合并单元92上执行中间结果合并操作,其中,在调度到所述第一优先级数据合并单元91进行合并的情况下,合并操作被延迟到当前超图分块全部处理结束后执行,所述第一优先级数据合并单元91从处理单元的私有寄存器82读取数据,使用合并流水线10完成中间结果合并,或者在调度到所述第二优先级数据合并单元92进行合并的情况下,合并操作与计算任务同时执行,所述第二优先级数据合并单元92从处理单元中获取中间数据,使用排序合并网络11完成中间结果合并;所述激活单元93根据顶点或超边数据的变化情况修改其激活状态。
100.s66:在超图算法不收敛的情况下,执行下一轮迭代。
101.具体的,若仍存在顶点或超边处于激活状态,则超图处理不收敛。
102.需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。本发明说明书包含多项发明构思,诸如“优选地”、“根据一个优选实施方式”或“可选地”均表示相应段落公开了一个独立的构思,申请人保留根据每项发明构思提出分案申请的权利。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献