System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种应用多GPU协同进行单源最短路径计算方法技术_技高网

一种应用多GPU协同进行单源最短路径计算方法技术

技术编号:40927302 阅读:3 留言:0更新日期:2024-04-18 14:49
本发明专利技术提供了一种应用多GPU协同进行单源最短路径计算方法,包括步骤:S1、获取原始的第一图数据和预设的步进增量,根据步进增量预先确定第一图数据中的轻边和重边,构建在不同子图分别存储轻边和重边的局部感知的第二图数据;S2、将所述第二图数据中的轻边和重边均衡划分为N份,并根据每份划分到的轻边和重边,生成在不同子图分别存储轻边和重边的第三图数据,得到N份第三图数据,所述N为参与计算的GPU的数量,N≥2;S3、获取源顶点,由N个GPU读取各自分到的第三图数据,基于德尔塔步进算法协同进行单源最短路径计算,确定源顶点到每个顶点间的最短路径;本发明专利技术提升了确定单源最短路径的效率。

【技术实现步骤摘要】

本专利技术涉及计算机,具体来说涉及图数据处理领域,更具体地说,涉及一种应用多gpu协同进行单源最短路径计算方法。


技术介绍

1、图(graph)作为表达对象及其复杂关系的一种基本数据结构,已经渗透到很多关键应用中。为更好地分析、研究和挖掘图数据中潜在的联系与价值,图计算技术应运而生,并在互联网、金融、医疗、能源、脑科学等领域有着广阔的应用前景。其中,单源最短路径算法(single source shortest path,简称sssp算法)作为图计算技术中的一种基础图遍历算法,已成为学术界和工业界研究的热点之一。

2、sssp算法的基本思想是从图中任意一个顶点出发,遍历计算该顶点到图中其它所有顶点的最短距离。典型的sssp算法是迪杰斯特拉算法(dijkstra)和贝尔曼-福特(bellman-ford)算法。dijkstra算法基于贪心的思想,每次遍历到起始顶点距离最近且未访问过的顶点的邻居顶点,直到所有顶点都被访问过。处理过程中,为快速找到距离起始顶点最短的距离,迪杰斯特拉算法经常使用优先级队列。对于图中的任意一个顶点的距离,迪杰斯特拉算法最多只更新一次,故它是工作高效的。然而,对gpu来说,优先级队列结构较难实现,同时,迪杰斯特拉算法每次迭代,只处理一个顶点,故其并行性较差。与迪杰斯特拉算法不同,贝尔曼-福特算法(bellman-ford)并行性较好,因为它每次可以处理多个活跃的顶点。但是,贝尔曼-福特算法会导致顶点更新多次,所以它的工作效率较差。

3、为了权衡算法的并行性和高效性,德尔塔步进算法(δ-stepping算法)被提出,它综合了迪杰斯特拉算法和贝尔曼-福特算法的思想,引入了桶(后面简称bucket)和δ(delta,即步进增量)的概念,并依据δ值,将每个顶点的邻边分为轻边(或者称light边)和重边(或者称heavy边),同时依据距离值,将所有的顶点放在不同的桶中。对整数i(i≥0),bi(第i个桶)将存储距离属于[i·δ,(i+1)·δ)的所有顶点。德尔塔步进算法按照桶的编号的顺序从小到大依次对非空桶进行处理,直到不存在任何活跃的顶点为止。其处理过程包括三个阶段:阶段一,循环处理当前桶中所有点的所有轻边,直到当前桶的所有轻边不会带来相关顶点的最短路径/距离更新;阶段二,对所有距离落在当前桶中的顶点,基于它们的重边,执行相关邻居顶点的最短路径/距离更新;阶段三,遍历所有的顶点,筛选出距离落在下一个桶中的所有顶点,同时更新桶信息,以进入下一个桶的处理。其中,阶段一和阶段二会执行sssp算法的基本操作,即松弛边操作。该松弛边操作,针对一个顶点u和它的一个邻边e(u,v,w),它会判断v顶点的最短距离dist[v]与dist[u]+w的大小,如果dist[v]大于dist[u]+w,则用dist[u]+w更新dist[v],否则不进行任何处理。其中,e(u,v,w)表示顶点u和顶点v之间的边,该边的权重为w。

4、由于德尔塔步进算法很好地权衡了迪杰斯特拉算法和贝尔曼-福特算法,故得了业界普遍的关注与研究。但因图数据的局部性差,分布不规则,图算法执行依赖复杂等,使得德尔塔步进算法在gpu上处理时面临着访存效率低、冗余开销大、负载不均衡、收敛速度慢等难题,其性能难以满足实际应用需求。


技术实现思路

1、因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种应用多gpu协同进行单源最短路径计算方法。

2、本专利技术的目的是通过以下技术方案实现的:

3、根据本专利技术的第一方面,提供一种应用多gpu协同进行单源最短路径计算方法,包括步骤:s1、获取原始的第一图数据和预设的步进增量,根据步进增量预先确定第一图数据中的轻边和重边,构建在不同子图分别存储轻边和重边的局部感知的第二图数据;s2、将所述第二图数据中的轻边和重边均衡划分为n份,并根据每份划分到的轻边和重边,生成在不同子图分别存储轻边和重边的第三图数据,得到n份第三图数据,所述n为参与计算的gpu的数量,n≥2;s3、获取源顶点,由n个gpu读取各自分到的第三图数据,基于德尔塔步进算法协同进行单源最短路径计算,确定源顶点到每个顶点间的最短路径。本专利技术通过考虑德尔塔步进算法的特性,在执行德尔塔步进算法前先将轻边和重边划分到不同的子图中存储,充分考虑了德尔塔步进算法不同阶段访问不同类型边数据的执行特性,执行过程中访存效率得到显著提升,并减少了一定的冗余开销,提升了确定单源最短路径的效率,原因是德尔塔步进算法执行过程中,是分阶段处理的,所以把轻边和重边分开,数据的局部性能够变好,访存效率将得到提升;另外,通过轻边和重边的均衡划分,可以让各gpu更高效地协同确定最短路径。

4、可选的,所述步骤s1包括:s11、获取预设的调整参数和原始的第一图数据,根据所述调整参数、第一图数据中顶点间边的权重和度信息确定步进增量,其中,所述调整参数与gpu执行调度的基本单位所含的线程数相关;s12、将第一图数据中边的权重小于等于所述步进增量的边划分为轻边,其余的边划分为重边;s13、根据各个轻边构建第二图数据中的轻边子图,根据各个所述重边构建第二图数据中的重边子图。本专利技术通过将步进增量与gpu执行调度的基本单位所含的线程数相关,充分考虑gpu的并行能力,提升德尔塔步进算法的执行效率。

5、可选的,第二图数据以csr结构存,第二图数据的顶点编号是根据顶点的轻边数量大小重映射得到的重映射编号,并且建立同一顶点的重映射编号与原始编号的关联,其中,顶点的轻边数量相对越大则重映射编号越小。考虑到德尔塔步进算法在阶段一执行过程中,会频繁访问轻边度高的顶点,对此,算法执行前,本专利技术依据图数据顶点的轻边数目的降序对图数据顶点进行重编号,得到重映射编号,以提升数据局部性,从而提高访存效率。

6、可选的,所述第二图数据的邻边表中,同一顶点的权重越小的邻居顶点排在更靠近表头的位置。

7、可选的,所述步骤s2包括:s21、以单个顶点为划分单位,均衡地将所述第二图数据中轻边子图的各顶点关联的轻边分给n个gpu;s22、以单个边为划分单位,均衡地将所述第二图数据中重边子图的各个重边分给n个gpu;s23、根据步骤s21划分给每个gpu的轻边和步骤s22划分给每个gpu的重边,生成在不同子图分别存储轻边和重边的第三图数据。本专利技术采用任务驱动的图数据划分的策略,即对轻边以节点为单位划分,以保证划分的所有顶点的轻边存在一个gpu节点上,在后续德尔塔步进算法根据同一顶点进行关联的顶点的最短路径的距离更新时,可以减少不同gpu就同一顶点相关的数据进行同步,提高处理效率;另外,考虑到阶段二主要针对重边进行处理,重边以边为单位划分,即采用边中心的数据划分,从而保证划分到每个gpu上的重边信息粗粒度的相近即可;通过任务驱动的图数据划分,充分考虑了图数据特性和gpu数目,从而大致确保了数据划分的均衡性,同时减少了德尔塔步进算法在一轮迭代中的数据同步开销。

8、可选的,在步骤s3中,按以下方式为活跃顶点分配工作线程:获取本文档来自技高网...

【技术保护点】

1.一种应用多GPU协同进行单源最短路径计算方法,其特征在于,包括步骤:

2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:

3.根据权利要求1所述的方法,其特征在于,第二图数据以CSR结构存,第二图数据的顶点编号是根据顶点的轻边数量大小重映射得到的重映射编号,并且建立同一顶点的重映射编号与原始编号的关联,其中,顶点的轻边数量相对越大则重映射编号越小。

4.根据权利要求3所述的方法,其特征在于,所述第二图数据的邻边表中,同一顶点的权重越小的邻居顶点排在更靠近表头的位置。

5.根据权利要求1所述的方法,其特征在于,所述步骤S2包括:

6.根据权利要求1所述的方法,其特征在于,在步骤S3中,按以下方式为活跃顶点分配工作线程:

7.根据权利要求6所述的方法,其特征在于,在步骤S3中,设置三个轻边数目范围,分别为第一数目范围[1,32),第二数目范围[32,256)和第三数目范围[256,+∞),其中,第一、第二和第三数目范围对应的粒度单位所含的线程数依次为1、32和256,

8.根据权利要求7所述的方法,其特征在于,在每个GPU中,设置有管理线程和工作线程,所述工作线程包括小任务工作线程、中任务工作线程和大任务工作线程,其中,

9.根据权利要求6所述的方法,其特征在于,在步骤S3中,同一活跃顶点对应的任务以同步的方式执行,不同活跃顶点对应的任务间异步并行执行。

10.根据权利要求1-9之一所述的方法,其特征在于,所述第一图数据中的顶点代表地点,两个顶点间的边代表路径,边的权重代表路径长度。

...

【技术特征摘要】

1.一种应用多gpu协同进行单源最短路径计算方法,其特征在于,包括步骤:

2.根据权利要求1所述的方法,其特征在于,所述步骤s1包括:

3.根据权利要求1所述的方法,其特征在于,第二图数据以csr结构存,第二图数据的顶点编号是根据顶点的轻边数量大小重映射得到的重映射编号,并且建立同一顶点的重映射编号与原始编号的关联,其中,顶点的轻边数量相对越大则重映射编号越小。

4.根据权利要求3所述的方法,其特征在于,所述第二图数据的邻边表中,同一顶点的权重越小的邻居顶点排在更靠近表头的位置。

5.根据权利要求1所述的方法,其特征在于,所述步骤s2包括:

6.根据权利要求1所述的方法,其特征在于,在步骤s3中,按以下方式为活跃顶点分配工作线程:

...

【专利技术属性】
技术研发人员:张园曹华伟张婕孙一鸣安学军叶笑春
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1