CN109636709B - 一种适用于异构平台的图计算方法 - Google Patents
一种适用于异构平台的图计算方法 Download PDFInfo
- Publication number
- CN109636709B CN109636709B CN201811434804.7A CN201811434804A CN109636709B CN 109636709 B CN109636709 B CN 109636709B CN 201811434804 A CN201811434804 A CN 201811434804A CN 109636709 B CN109636709 B CN 109636709B
- Authority
- CN
- China
- Prior art keywords
- calculation
- data block
- state
- node
- current iteration
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种适用于异构平台的图计算方法,包括:(1)对原始图数据进行预处理,从而得到多个数据块及每个数据块对应的元数据信息;(2)根据元数据信息评估当前迭代的计算密度;(3)若计算密度小于预设的计算密度阈值且不为0,则由主机根据数据块执行当前迭代的计算任务;若计算密度大于或等于计算密度阈值,则由加速器根据数据块执行当前迭代的计算任务;若计算密度为0,则图计算完成;(4)基于历史状态信息更新节点的状态,当前迭代结束;(5)重复执行步骤(2)~(4),直至图计算完成。本计算能够充分利用异构平台的计算能力,提高异构平台处理图计算的整体性能。
Description
技术领域
本发明属于基于加速器的大数据领域,更具体地,涉及一种适用于异构平台的图计算方法。
背景技术
图拓扑是一种表征实体与实体之间拓扑关联的有效抽象,现实世界中如社交网络,交通运输,互联网,生物制药等许多问题都可以抽象为图结构,图计算可以有效的解决这类问题。
当前图计算主要面临的问题包括:数据规模大,随机访存以及计算访存比高。数据规模大表现在实际需求中图节点个数可达数十亿级别,而节点与节点之间的关联规模可达万亿级别,这种特征使得图计算需要大量的存储资源和计算能力,可扩展性需要得到满足;随机访存表现在图信息在传播的过程中通常需要访问邻居列表,这种特征会导致访存地址空间特别大,基于局部性原理的缓存策略和体系结构并不适用;计算访存比高表现在图计算的大量应用计算比较简单,这种特征会导致计算核心大量停滞等待数据到来,整体性能差。
基于加速器(如GPU)的图计算平台得益于加速器本身的高带宽和高并发度,对于图处理应用能达到很高的性能。但受限于加速器本地存储空间的限制,仅仅基于加速器的图计算平台所能处理的图规模相当有限。
图计算应用在多方面表现出异构的特性:在图本身的结构特性上,不同的图数据差异很大;从图迭代过程中,算法的计算量也会发生变化;采用不同的算法,图计算也表现出很强的差异性。由于图具有这些异构的特性,并不存在单一的计算平台能有效处理所有与图计算相关的数据和算法,这使得在同时包含主机和加速器的异构平台上同时任务调度的方案成为图计算应用一种新的考虑。但由于系统性能受限于互联结构的传输速度,并且主机和加速器之间存在着协同开销,异构图处理仍然面临着明显的问题和挑战。
现有的适用于异构平台的图计算方法并没有很好的解决以上问题。Totem延续分布式的思维,将数据划分到CPU和GPU,计算核心处理自己的数据部分,通过PCI-E进行通信,但GPU的计算任务量受限于GPU的存储空间,其GPU的计算能力无法完全发挥;GTS采用的是将图拓扑数据传输到设备端进行计算,且仅采用设备执行计算任务,由于图的拓扑数据巨大,这会导致大量的数据传输,且每次传输的数据可能只使用一次就会被清除;Mosaic采用的是各个设备执行具体的计算任务,主机端进行任务的合并,图的结构数据也需要传输到设备,会有大量的数据传输,系统性能受限于低速的主存和设备存储器的传输带宽;Garaph对每个独立的任务进行了分析,将其合适的调度到主机和设备端进行执行,数据的传递数量减少了,但主机和设备之间的负载均衡难以控制,且GPU计算能力仍受限于数据传输。
总的来说,现有的适用于异构平台的图计算方法并没有充分利用异构平台的计算能力,并且由于图计算过程中存在的大量的数据传输和同步开销导致了计算效率不高。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种适用于异构平台的图计算方法,其目的在于,充分利用异构平台的计算能力并减小主机和加速器之间的数据传输和同步开销,从而提高图计算的计算效率。
为实现上述目的,本发明提供了一种适用于异构平台的图计算方法,异构平台包括主机和加速器,包括如下步骤:
(1)对原始图数据进行预处理,从而得到多个数据块及每个数据块对应的元数据信息;
(2)根据元数据信息评估当前迭代的计算密度;
(3)若计算密度小于预设的计算密度阈值且不为0,则由主机根据数据块执行当前迭代的计算任务;若计算密度大于或等于计算密度阈值,则由加速器根据数据块执行当前迭代的计算任务;若计算密度为0,则图计算完成;
(4)基于历史状态信息更新节点的状态,当前迭代结束;
(5)重复执行步骤(2)~(4),直至图计算完成;
其中,各节点的状态在初始时刻均为活跃状态。
加速器具有高带宽和高并发度,能够高效的执行图计算的任务,但是加速器在执行计算任务之前,数据块需要从主机传输至加速器,只有当计算性能提升的收益高于数据传输的开销,由加速器执行计算的效益才能得以体现。在本发明所提供的适用于异构平台的图计算方法中,在执行每一次迭代之前都会先对当前迭代的计算密度进行评估,并根据评估结果确定由主机还是加速器执行当前迭代的计算任务,具体地,经过评估,如果当前迭代的计算密度较大(大于预设的计算密度阈值),则由加速器执行当前迭代的计算任务,由此可以充分利用异构平台的计算能力,提高异构平台处理图计算的整体性能。
进一步地,步骤(1)包括:
(11)对原始图数据中的边序列进行排序以得到边的有序序列,使得有序序列中起点有序,且同一起点对应的出边的终点有序;
(12)对有序序列进行划分并根据划分结果生成多个数据块,使得每个数据块存储部分连续的节点以及对应的出边信息,并且每个数据块中存储的数据量不超过预先分配的存储空间大小;
(13)为每一个数据块生成对应的元数据信息;
其中,元数据信息包括数据块的点数量、边数量、迭代次数、活跃点数及缓存状态。
进一步地,步骤(2)中,根据元数据信息评估当前迭代的计算密度,包括:
随机选取K个数据块并从每个数据块中随机选取C条边,从而得到由K×C条边构成的样本集合;
其中,活跃边的起点状态为活跃状态,Mi表示所选取的第i个数据块所存储的边数。
通过以上随机抽样的方式评估当前迭代的计算密度,能够在保证较高的评估准确度的同时,有效减少大规模图中的评估开销。
进一步地,步骤(3)中,主机根据数据块执行当前迭代的计算,包括:
根据数据块的编号,采用哈希方式将数据块对应的计算任务分配给主机中的多个核心,以由多个核心并行地执行计算任务;
若任意一个核心CA的计算任务执行完成,且当前迭代的计算任务还未完成,则确定剩余计算任务最多的核心CB,并将核心CB的计算任务队列尾部的计算任务转分配给核心CA。
在主机采用以上调度方法,能够实现主机中多个核心之间的负载均衡,提高计算效率。
进一步地,步骤(3)中,加速器根据数据块执行当前迭代的计算,包括:
对于任意一个数据块B,若连续R1次迭代中数据块B中活跃边的比例均低于预设的活跃度阈值,则在当前迭代中数据块B不参与计算,也不对数据块B进行传输;
其中,活跃边的起点状态为活跃状态。
更进一步地,步骤(3)中,加速器根据数据块执行当前迭代的计算,还包括:
(S1)在加速器端并行的执行N1个数据块对应的计算任务,在执行计算任务的同时从主机传输N2个数据块至加速器端,并在计算任务执行完成后丢弃加速器中的前N2个数据块;
(S2)重复执行(S1)直至当前迭代的计算任务执行完成;
其中,N1=S/M,S为加速器的存储容量,M为分配给每个数据块的存储空间大小;N2=N1/T,T表示在当前迭代中每个数据块对应的计算任务需要被执行的次数。
在加速器中采用以上调度方法,一方面,通过多次子迭代,即对同一数据块进行多次处理的方法执行当前迭代的计算任务,能够减少主机和设备端的同步;另一方面,由于在同一次子迭代中会同时对相邻数据块进行并行处理,由此可以充分利用子图之间的局部性,提高数据利用率,减少数据块的传输次数;因此,在加速其中采用以上调度方法能够有效提升系统性能。
更进一步地,步骤(3)中,加速器根据数据块执行当前迭代的计算,还包括:
在起始阶段,额外执行几次计算任务作为补偿,以使得当前迭代中每个数据块对应的计算任务都被执行T次。
进一步地,步骤(4)中,基于历史状态信息更新节点的状态,包括:
对于任意一个节点I,若在当前迭代中节点I的值被更新,则设置节点I的状态为活跃状态;
若节点I在连续R2次迭代中均未被更新,则设置节点I的状态为休眠状态,并在后续R2次迭代中均不对节点I进行更新操作;
若节点I的状态为休眠状态,且经过R2次迭代均未对其进行更新操作,则在当前迭代中尝试对节点I进行更新操作,更新成功则设置的状态为活跃状态,更新不成功则设置节点I的状态为休眠状态,并在后续R2次迭代中均不对节点I进行更新操作。
对于在连续多次迭代中均未被更新的节点,其在接下来的迭代中被更新的概率也较小,通过以上更新节点状态的方法,能够有效减少图计算过程中的冗余操作,从而提高计算资源的利用率,并且有助于准确识别数据块中的活跃边,提高计算密度的评估准确度。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的适用于异构平台的图计算方法,在执行每一次迭代之前都会先对当前迭代的计算密度进行评估,若评估的计算密度较大,则由加速器执行当前迭代的计算任务,若评估的计算密度较小,则由主机执行当前迭代的计算任务,由此能够由此可以充分利用异构平台的计算能力,提高异构平台处理图计算的整体性能。
(2)本发明所提供的适用于异构平台的图计算方法,在主机执行迭代计算时,通过哈希方式分配计算任务,并在其中一个核心执行完计算任务后,从别的核心转分配计算任务给该核心,由此能够实现主机中多个核心之间的负载均衡,提高计算效率。
(3)本发明所提供的适用于异构平台的图计算方法,在加速器执行迭代任务时,一方面,通过多次子迭代,能够减少主机和设备端的同步;另一方面,由于在同一次子迭代中会同时对相邻数据块进行并行处理,由此可以充分利用子图之间的局部性,提高数据利用率,减少数据块的传输次数;因此,在加速其中采用的调度方法能够有效提升系统性能。
(4)本发明所提供的适用于异构平台的图计算处理方法,通过随机抽样的方式评估每一次迭代的计算密度,能够在保证较高的评估准确度的同时,有效减少大规模图中的评估开销。
附图说明
图1为本发明实施例提供的适用于异构平台的图计算方法流程图;
图2为本发明实施例提供的数据块结构示意图;
图3为本发明实施例提供的主机端任务调度方法示意图;
图4为本发明实施例提供的加速器端任务调度方法与现有调度方法的对比示意图;(a)为现有的加速器端任务调度方法示意图;(b)为本发明实施例提供的加速器端任务调度方法示意图;
图5为本发明实施例提供的更新节点状态的方法示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明所提供的适用于异构平台的图计算方法,如图1所示,包括如下步骤:
(1)对原始图数据进行预处理,从而得到多个数据块及每个数据块对应的元数据信息;
在一个可选的实施方式中,步骤(1)具体包括:
(11)对原始图数据中的边序列进行排序以得到边的有序序列,使得有序序列中起点有序,且同一起点对应的出边的终点有序;
(12)对有序序列进行划分并根据划分结果生成多个数据块,使得每个数据块存储部分连续的节点以及对应的出边信息,并且每个数据块中存储的数据量不超过预先分配的存储空间大小;
(13)为每一个数据块生成对应的元数据信息;
其中,元数据信息包括数据块的点数量、边数量、迭代次数、活跃点数及缓存状态;
(2)根据元数据信息评估当前迭代的计算密度;
在一个可选的实施方式中,步骤(2)中,根据元数据信息评估当前迭代的计算密度,包括:
随机选取K个数据块并从每个数据块中随机选取C条边,从而得到由K×C条边构成的样本集合;
其中,活跃边的起点状态为活跃状态,Mi表示所选取的第i个数据块所存储的边数;
通过以上随机抽样的方式评估当前迭代的计算密度,能够在保证较高的评估准确度的同时,有效减少大规模图中的评估开销;
(3)若计算密度小于预设的计算密度阈值且不为0,则由主机根据数据块执行当前迭代的计算任务;若计算密度大于或等于计算密度阈值,则由加速器根据数据块执行当前迭代的计算任务;若计算密度为0,则图计算完成;
若计算密度小于预设的计算密度阈值且不为0,则由主机根据数据块执行当前迭代的计算任务,在一个可选的实施方式中,步骤(3)中,主机根据数据块执行当前迭代的计算,包括:
根据数据块的编号,采用哈希方式将数据块对应的计算任务分配给主机中的多个核心,以由多个核心并行地执行计算任务;
若任意一个核心CA的计算任务执行完成,且当前迭代的计算任务还未完成,则确定剩余计算任务最多的核心CB,并将核心CB的计算任务队列尾部的计算任务转分配给核心CA。
在主机采用以上调度方法,能够实现主机中多个核心之间的负载均衡,提高计算效率。
若计算密度大于或等于计算密度阈值,则由加速器根据数据块执行当前迭代的计算任务,在一个可选的实施方式中,步骤(3)中,由加速器根据数据块执行当前迭代的计算,包括:
对于任意一个数据块B,若连续R1次迭代中数据块B中活跃边的比例均低于预设的活跃度阈值,则在当前迭代中数据块B不参与计算,也不对数据块B进行传输;其中,活跃边的起点状态为活跃状态;
步骤(3)中,由加速器根据数据块执行当前迭代的计算,还包括:
(S1)在加速器端并行的执行N1个数据块对应的计算任务,在执行计算任务的同时从主机传输N2个数据块至加速器端,并在计算任务执行完成后丢弃加速器中的前N2个数据块;
(S2)重复执行(S1)直至当前迭代的计算任务执行完成;
其中,N1=S/M,S为加速器的存储容量,M为分配给每个数据块的存储空间大小;N2=N1/T,T表示在当前迭代中每个数据块对应的计算任务需要被执行的次数;
在加速器中采用以上调度方法,一方面,通过多次子迭代,即对同一数据块进行多次处理的方法执行当前迭代的计算任务,能够减少主机和设备端的同步;另一方面,由于在同一次子迭代中会同时对相邻数据块进行并行处理,由此可以充分利用子图之间的局部性,提高数据利用率,减少数据块的传输次数;因此,在加速其中采用以上调度方法能够有效提升系统性能;
步骤(3)中,由加速器根据数据块执行当前迭代的计算,还包括:
在起始阶段,额外执行几次计算任务作为补偿,以使得当前迭代中每个数据块对应的计算任务都被执行T次;
(4)基于历史状态信息更新节点的状态,当前迭代结束;
在一个可选的实施方式中,步骤(4)中,基于历史状态信息更新节点的状态,包括:
对于任意一个节点I,若在当前迭代中节点I的值被更新,则设置节点I的状态为活跃状态;
若节点I在连续R2次迭代中均未被更新,则设置节点I的状态为休眠状态,并在后续R2次迭代中均不对节点I进行更新操作;
若节点I的状态为休眠状态,且经过R2次迭代均未对其进行更新操作,则在当前迭代中尝试对节点I进行更新操作,更新成功则设置的状态为活跃状态,更新不成功则设置节点I的状态为休眠状态,并在后续R2次迭代中均不对节点I进行更新操作;
对于在连续多次迭代中均未被更新的节点,其在接下来的迭代中被更新的概率也较小,通过以上更新节点状态的方法,能够有效减少图计算过程中的冗余操作,从而提高计算资源的利用率,并且有助于准确识别数据块中的活跃边,提高计算密度的评估准确度;
(5)重复执行步骤(2)~(4),直至图计算完成;
其中,各节点的状态在初始时刻均为活跃状态。
加速器具有高带宽和高并发度,能够高效的执行图计算的任务,但是加速器在执行计算任务之前,数据块需要从主机传输至加速器,只有当计算性能提升的收益高于数据传输的开销,由加速器执行计算的效益才能得以体现。在本发明所提供的适用于异构平台的图计算方法中,在执行每一次迭代之前都会先对当前迭代的计算密度进行评估,并根据评估结果确定由主机还是加速器执行当前迭代的计算任务,具体地,经过评估,如果当前迭代的计算密度较大(大于预设的计算密度阈值),则由加速器执行当前迭代的计算任务,由此可以充分利用异构平台的计算能力,提高异构平台处理图计算的整体性能。
应用实例
步骤(1):数据预处理
一般的图数据为边序列结构,对于有权图每条边还会有对应的权值;原始图数据是(u1,v1,w1),(u2,v2,w2)…(um,vm,wm)的无序集合,或者可以等价于这种格式,以文本形式存储在文件中,其中,每一个边对应的数据(um,vm,wm)中,um、vm和wm分别表示该边的起点、终点及权值;
经过上述步骤(11)的排序后,有序序列中每个节点的出边为连续的一串数据,同时可获得每个节点的第一条出边在有序序列中的偏移量;以O(v)表示节点v的第一条出边在有序序列中的偏移量,则对于节点u而言,其出边邻居序列被保存在有序序列的O(u)~O(u+1)-1这段连续地址空间;
由于加速器存储空间有限,对于足够大规模的图数据,无法存储所有的点边数据,上述步骤(12)中通过对有序序列进行划分并根据划分结果生成多个数据块,能够有效解决这一问题;根据上述生成数据块的方法,对应从起点为节点u进行划分的点,其切分范围为max(u’)同时满足sizeof(u)*(u’-u+1)+sizeof(edge)*(O(u’+1)-O(u))<M,即最大化空间的使用率,通过u计算得到u’可采用二分策略进行计算,复杂度较小;其中,u’为该数据块存储的最大起点,sizeof(u)和sizeof(edge)分别表示存储一个节点和一条边所需的存储空间,M为分配给每个数据块的存储空间大小;
在本实施例中,对于每个生成的数据块,其组织结构如图2所示,块开始的位置存储的是块内所有点对应的边序列在块内的偏移量,即存储的是u~u’这部分点边序列在块内的索引地址;v从整体的偏移量到块内偏移量的计算公式为O(v)-O(u)+(u’-u+1),对应地址连续存储v的相邻节点编号,对应边的权值存储位置O(v)+O(u’)-2*O(u)+(u’-u+1);对每个数据块存储的数据,即有效存储了部分连续节点以及这部分节点对应的出边信息;
同时,为了方便计算单元对每个数据块的计算,数据块生成的同时会生成一个对数据块的元数据信息,主要包括图数据块的统计信息即点边数量,同时还会预先分配一些后期动态实时信息,例如迭代次数,活跃点数和缓存状态等,如图2数据块元信息栏所示;
步骤(2):评估计算密度
评估计算密度的方法包括:
随机选取K个数据块并从每个数据块中随机选取C条边,从而得到由K×C条边构成的样本集合;K的取值为总数据块数的1/5,C的取值为每个数据块中总边数的1/20,以保证能够在保证较高的评估准确度的同时,有效减少大规模图中的评估开销;
步骤(3):对迭代任务进行调度
若计算密度小于预设的计算密度阈值且不为0,则由主机执行当前迭代的计算任务,在一个可选的实施方式中,步骤(3)中,主机执行当前迭代的计算,如图3所示,包括:
根据数据块的编号,采用哈希方式将数据块对应的计算任务分配给主机中的多个核心,以由多个核心并行地执行计算任务;
若任意一个核心CA的计算任务执行完成,且当前迭代的计算任务还未完成,则确定剩余计算任务最多的核心CB,并将核心CB的计算任务队列尾部的计算任务转分配给核心CA;如图3所示,主机共包括3个核心,即核心1~核心3,在某一时刻,若核心2的计算任务执行完成,而核心1和核心3均还有计算任务未执行完,则从剩余计算任务最多的核心1的计算任务队列尾部抽取计算任务转分配给核心2;
在主机端采用以上调度方法,能够实现主机中多个核心之间的负载均衡,提高计算效率;
若计算密度大于或等于计算密度阈值,则由加速器执行当前迭代的计算任务,在一个可选的实施方式中,步骤(3)中,由加速器执行当前迭代的计算,包括:
对于任意一个数据块B,若连续两次次迭代中数据块B中活跃边的比例均低于预设的活跃度阈值,则在当前迭代中数据块B不参与计算,也不对数据块B进行传输;
图计算由于计算量少、数据量大的特点,计算无法隐藏数据传输,一种有效的策略是使用多次子迭代的方法处理图计算中的一次迭代任务,这种方法的基本思想是对一个数据块进行多次子迭代计算,由此提取出数据块中的所有有价值的信息;但由于信息仅在块内部传递,这种方法会导致部分数据被多次更新;
如图4(a)所示,在传统的基于多次子迭代的调度策略中,若设定子迭代次数为3,则先对数据块1进行3次迭代,然后再对数据块2进行3次迭代,这样每个数据存取后可进行多次计算而仅需要1次数据传输,从而通过计算屏蔽掉数据传输;但这样会带来冗余计算的问题,如图4(a)所示,数据块2第一次更新时会对数据块1中的部分点进行更新,而数据块1的迭代已经完成,这会导致数据块1被激活的这部分对数据块1的更新以及对数据块2的更新只有到下一次才会参与进来,从而可能会导致更多的迭代;
基于多次子迭代的思想,在本实施例中,步骤(3)中,由加速器执行当前迭代的计算,如图4(b)所示,还包括:
(S1)在加速器端并行的执行6个数据块对应的计算任务,在执行计算任务的同时从主机传输个2数据块至加速器端,并在计算任务执行完成后丢弃加速器中的前2个数据块;
(S2)重复执行(S1)直至当前迭代的计算任务执行完成;
如图4(b)所示,第一次计算任务s1~s6,第二次计算任务为s3~s8,第三次迭代任务为s5~s10;
在起始阶段,需要额外执行几次计算任务作为补偿,以使得当前迭代中每个数据块对应的计算任务都被执行3次;
这样处理的优势在于,相邻点迭代处理的深度较小,能及时得到更新,同时得益于子图局部性的特征,这部分有效更新的比例相对于整体更新的比例并不小,从而在既满足了计算隐藏数据传递的同时,也大大降低了冗余计算带来的额外开销;
在加速器中采用以上调度方法,一方面,通过多次子迭代,即对同一数据块进行多次处理的方法执行当前迭代的计算任务,能够减少主机和设备端的同步;另一方面,由于在同一次子迭代中会同时对相邻数据块进行并行处理,由此可以充分利用子图之间的局部性,提高数据利用率,减少数据块的传输次数;因此,在加速其中采用以上调度方法能够有效提升系统性能;
在本实施例中,根据经验,计算密度阈值设置为0.01,应当理解的是,在其他的应用场景下,计算密度阈值可能会有不同的取值;
步骤(4):更新节点状态
上述更新节点状态的方法可简化为图5所示,取R2=2,初始时刻,节点状态为状态0;若节点在迭代过程被更新,则恢复状态0;若连续两轮状态0的节点值均未被更新,则设置节点状态为休眠状态(0->5->3),即状态3,并在后续两轮迭代中不再执行更新操作(状态3,状态2);两轮迭代结束后节点会再次尝试更新(状态1),若更新成功,则恢复状态0(1->0),若更新不成功,则回归休眠状态(1->4),并在后续两轮迭代中不再执行更新操作(状态3,状态2);
步骤(5):
重复执行步骤(2)~(4),直至图计算完成。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种适用于异构平台的图计算方法,所述异构平台包括主机和加速器,其特征在于,包括如下步骤:
(1)对原始图数据进行预处理,从而得到多个数据块及每个数据块对应的元数据信息;
(2)根据所述元数据信息评估当前迭代的计算密度;
(3)若所述计算密度小于预设的计算密度阈值且不为0,则由所述主机根据所述数据块执行当前迭代的计算任务;若所述计算密度大于或等于所述计算密度阈值,则由所述加速器根据所述数据块执行当前迭代的计算任务;若所述计算密度为0,则图计算完成;
(4)基于历史状态信息更新节点的状态,当前迭代结束;
(5)重复执行步骤(2)~(4),直至图计算完成;
其中,各节点的状态在初始时刻均为活跃状态;所述元数据信息包括数据块的点数量、边数量、迭代次数、活跃点数及缓存状态;
所述步骤(2)中,根据所述元数据信息评估当前迭代的计算密度,包括:
随机选取K个数据块并从每个数据块中随机选取C条边,从而得到由K×C条边构成的样本集合;
其中,所述活跃边的起点状态为活跃状态,Mi表示所选取的第i个数据块所存储的边数。
2.如权利要求1所述的适用于异构平台的图计算方法,其特征在于,所述步骤(1)包括:
(11)对原始图数据中的边序列进行排序以得到边的有序序列,使得所述有序序列中起点有序,且同一起点对应的出边的终点有序;
(12)对所述有序序列进行划分并根据划分结果生成多个数据块,使得每个数据块存储部分连续的节点以及对应的出边信息,并且每个数据块中存储的数据量不超过预先分配的存储空间大小;
(13)为每一个数据块生成对应的元数据信息。
3.如权利要求1或2所述的适用于异构平台的图计算方法,其特征在于,所述步骤(3)中,主机根据所述数据块执行当前迭代的计算,包括:
根据数据块的编号,采用哈希方式将数据块对应的计算任务分配给主机中的多个核心,以由多个核心并行地执行计算任务;
若任意一个核心CA的计算任务执行完成,且当前迭代的计算任务还未完成,则确定剩余计算任务最多的核心CB,并将所述核心CB的计算任务队列尾部的计算任务转分配给所述核心CA。
4.如权利要求1或2所述的适用于异构平台的图计算方法,其特征在于,所述步骤(3)中,所述加速器根据所述数据块执行当前迭代的计算,包括:
对于任意一个数据块B,若连续R1次迭代中所述数据块B中活跃边的比例均低于预设的活跃度阈值,则在当前迭代中所述数据块B不参与计算,也不对所述数据块B进行传输;
其中,所述活跃边的起点状态为活跃状态。
5.如权利要求4所述的适用于异构平台的图计算方法,其特征在于,所述步骤(3)中,所述加速器根据所述数据块执行当前迭代的计算,还包括:
(S1)在加速器端并行的执行N1个数据块对应的计算任务,在执行计算任务的同时从主机传输N2个数据块至加速器端,并在计算任务执行完成后丢弃加速器中的前N2个数据块;
(S2)重复执行(S1)直至当前迭代的计算执行完成;
其中,N1=S/M,S为所述加速器的存储容量,M为分配给每个数据块的存储空间大小;N2=N1/T,T表示在当前迭代中每个数据块对应的计算任务需要被执行的次数。
6.如权利要求5所述的适用于异构平台的图计算方法,其特征在于,所述步骤(3)中,所述加速器根据所述数据块执行当前迭代的计算,还包括:
在起始阶段,额外执行几次计算任务作为补偿,以使得当前迭代中每个数据块对应的计算任务都被执行T次。
7.如权利要求1或2所述的适用于异构平台的图计算方法,其特征在于,所述步骤(4)中,基于历史状态信息更新节点的状态,包括:
对于任意一个节点I,若在当前迭代中所述节点I的值被更新,则设置所述节点I的状态为活跃状态;
若所述节点I在连续R2次迭代中均未被更新,则设置所述节点I的状态为休眠状态,并在后续R2次迭代中均不对所述节点I进行更新操作;
若所述节点I的状态为休眠状态,且经过R2次迭代均未对其进行更新操作,则在当前迭代中尝试对所述节点I进行更新操作,更新成功则设置的状态为活跃状态,更新不成功则设置所述节点I的状态为休眠状态,并在后续R2次迭代中均不对所述节点I进行更新操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434804.7A CN109636709B (zh) | 2018-11-28 | 2018-11-28 | 一种适用于异构平台的图计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434804.7A CN109636709B (zh) | 2018-11-28 | 2018-11-28 | 一种适用于异构平台的图计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109636709A CN109636709A (zh) | 2019-04-16 |
CN109636709B true CN109636709B (zh) | 2020-12-08 |
Family
ID=66069525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811434804.7A Active CN109636709B (zh) | 2018-11-28 | 2018-11-28 | 一种适用于异构平台的图计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109636709B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110221924A (zh) * | 2019-04-29 | 2019-09-10 | 北京云迹科技有限公司 | 数据处理的方法及装置 |
CN111553834B (zh) * | 2020-04-24 | 2023-11-03 | 上海交通大学 | 基于fpga的并发图数据预处理方法 |
CN116702207B (zh) * | 2023-06-20 | 2024-03-22 | 煋辰数梦(杭州)科技有限公司 | 一种基于隐私计算平台的数据交换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096744A (zh) * | 2011-03-07 | 2011-06-15 | 杭州电子科技大学 | 一种非规则迭代并行化方法 |
CN102253919A (zh) * | 2011-05-25 | 2011-11-23 | 中国石油集团川庆钻探工程有限公司 | 基于gpu和cpu协同运算的并行数值模拟方法和系统 |
WO2015164397A1 (en) * | 2014-04-21 | 2015-10-29 | Qualcomm Incorporated | Flex rendering based on a render target in graphics processing |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
-
2018
- 2018-11-28 CN CN201811434804.7A patent/CN109636709B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096744A (zh) * | 2011-03-07 | 2011-06-15 | 杭州电子科技大学 | 一种非规则迭代并行化方法 |
CN102253919A (zh) * | 2011-05-25 | 2011-11-23 | 中国石油集团川庆钻探工程有限公司 | 基于gpu和cpu协同运算的并行数值模拟方法和系统 |
WO2015164397A1 (en) * | 2014-04-21 | 2015-10-29 | Qualcomm Incorporated | Flex rendering based on a render target in graphics processing |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
Non-Patent Citations (1)
Title |
---|
Scaling Up Large-Scale Graph Processing for GPU-Accelerated Heterogeneous;Xianliang Li;《arXiv:1806.00762》;20180703;第1-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109636709A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khorasani et al. | Scalable simd-efficient graph processing on gpus | |
Zhang et al. | An effective modified migrating birds optimization for hybrid flowshop scheduling problem with lot streaming | |
Li et al. | Quantum supremacy circuit simulation on Sunway TaihuLight | |
CN109636709B (zh) | 一种适用于异构平台的图计算方法 | |
Attia et al. | Cygraph: A reconfigurable architecture for parallel breadth-first search | |
CN109522104B (zh) | 利用差分进化算法优化Iaas两目标任务调度的方法 | |
CN103970602B (zh) | 一种面向x86多核处理器的数据流程序调度方法 | |
CN111079921A (zh) | 一种基于异构分布式系统的高效神经网络训练调度方法 | |
US9807152B2 (en) | Distributed processing device and distributed processing system as well as distributed processing method | |
CN107341041B (zh) | 基于优先队列的云任务多维约束回填调度方法 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
CN112732436B (zh) | 一种多核处理器-单图形处理器的深度强化学习加速方法 | |
CN114647515A (zh) | 一种面向gpu集群的动态资源调度方法 | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
CN109254844B (zh) | 一种大规模图的三角形计算方法 | |
CN116954866A (zh) | 基于深度强化学习的边缘云下任务调度方法及系统 | |
CN116841762A (zh) | 一种图神经网络训练中的定长式边点结合采样机制 | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
Huang et al. | Improving speculative execution performance with coworker for cloud computing | |
CN111813525B (zh) | 一种异构系统工作流调度方法 | |
CN105718380B (zh) | 细胞阵列计算系统 | |
CN107025099B (zh) | 一种基于双队列模型的异步图计算实现方法及系统 | |
Ai et al. | DHCRF: A Distributed Conditional Random Field Algorithm on a Heterogeneous CPU-GPU Cluster for Big Data | |
VanCompernolle et al. | Maximum clique solver using bitsets on GPUs |
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 |