【技术实现步骤摘要】
基于连通分量生成优化的超级计算机基准测试加速方法
本专利技术涉及超级计算机大数据基准测试加速方法,尤指一种基于二维向量和路径压缩的连通分量生成优化进行基准测试加速的方法。
技术介绍
图作为一种常见的数据结构,可以用来抽象表达现实事物间各种复杂的关联关系。例如,社交网络、万维网等都可以采用图表示。图计算是针对图数据进行处理和计算,在现实生活中诸多场景都发挥着重要作用。近年来,图数据的规模不断增长,根据相关报告显示,2020年第三季度,Facebook每日活跃用户为18.2亿,腾讯微信及WeChat月活跃用户达到12.1亿,把用户和其之间的关系抽象为图中的点和边,那么图中点的规模达到了数十亿,边的规模更是达到了数千亿。这导致在数据存储和计算力方面具有更高的需求。超级计算机主要用于数值计算,在数据密集型应用广泛兴起的大数据时代,Graph500是测试超级计算机计算力(即超级计算机对数据的处理能力)的重要基准测试程序。Graph500以每秒遍历图中边的数量TEPS(TraversedEdgePerSecond)来衡量超级计算机的大数据处理能力。Graph500基准测试程序由图生成、图建立、BFS搜索与验证、结果输出四步组成,如图1所示。(1)图生成:通过Kronecker图生成器生成随机图结构G=(V,E),V为顶点集合,E为边集合,图的规模由用户输入的参数scale、edgefactor确定,其中,scale指示图的顶点规模,edgefactor指示每个顶点连接边的平均数量,N=2scale表示输入图的顶点 ...
【技术保护点】
1.一种基于连通分量生成优化的超级计算机基准测试加速方法,其特征在于包括以下步骤:/n第一步、图生成,通过Kronecker图生成器生成随机图结构G=(V,E),V为顶点集合,E为边集合,图的规模由用户输入的参数scale、edgefactor确定,其中,scale指示图的顶点规模,edgefactor指示每个顶点连接边的平均数量,N=2
【技术特征摘要】
1.一种基于连通分量生成优化的超级计算机基准测试加速方法,其特征在于包括以下步骤:
第一步、图生成,通过Kronecker图生成器生成随机图结构G=(V,E),V为顶点集合,E为边集合,图的规模由用户输入的参数scale、edgefactor确定,其中,scale指示图的顶点规模,edgefactor指示每个顶点连接边的平均数量,N=2scale表示G的顶点数目,即V的元素中的顶点个数,M=edgefactor×N表示G的边数目即E的元素数量;使用vi表示G中编号为i的顶点,使用顶点对(vi,vj)表示顶点vi到顶点vj的边;(vi,vj)∈E,i和j均为正整数且0≤i≤N-1,0≤j≤N-1;
第二步、构建存储图G的邻接矩阵A,Aij=0表示顶点vi与顶点vj之间没有边,Aij=1表示顶点vi与顶点vj之间有边;
第三步、数据结构初始化,把V中所有顶点的根顶点和子顶点设置成相应的值,遍历边集合E,去除边集合E中的自环边即顶点与自身连接的边,并根据边的两个顶点的不同情况来分类,方法是:
3.1.根据图G的数据规模scale,初始化V中所有顶点的根顶点向量root和二维子顶点向量son,root中包含N个元素,root[vi]表示顶点vi的根顶点,将root[vi]初始化为-1,son是二维向量,包含N个元素,每个元素都是一个向量,将son中的每个元素初始化为空向量;son[vi]表示顶点vi的子顶点向量,用来存储以顶点vi为根顶点的顶点集合,即以顶点vi为根顶点的连通分量的顶点信息,连通分量是root值为自身的顶点在son向量中所存储的内容;初始化变量e=1;
3.2.创建与Graph500源代码中边数据存储格式相一致的结构体packed_edge,packed_edge包含三个int类型的整型变量,第一个变量v0_low是构成边的第一个顶点的ID,第二个变量v1_low是构成与v0_low第一个变量相连边的第二个顶点的ID,第三个变量high留作功能扩展所用;用e_b.v0_low表示ID为v0_low的边e_b的第一个顶点,用e_b.v1_low表示ID为v1_low的边e_b的第二个顶点;
3.3.用结构体packed_edge创建一条边e_b,用于存贮从E中读取的边信息;
3.4.若e>M,表示边集合E已处理完毕,转第六步,否则,从边集合E中按顺序读取第e条边,令e_b=第e条边,其中e_b.v0_low和e_b.v1_low就是构成e_b的两个顶点,令e=e+1,转3.5;
3.5.如果e_b.v0_low≠e_b.v1_low,说明e_b.v0_low和e_b.v1_low连成的边不是自环边,转3.6,否则,说明e_b.v0_low和e_b.v1_low连成的边是自环边,直接转3.4;
3.6.判定e_b.v0_low和e_b.v1_low的根顶点是否相同,如果root[e_b.v0_low]=root[e_b.v1_low],转第四步,如果不相等,转第五步;
第四步、处理根顶点相同的情况,如果e_b.v0_low和e_b.v1_low均未被访问过,则将e_b.v0_low和e_b.v1_low合并到以e_b.v0_low为根顶点的连通分量son[e_b.v0_low]中,如果e_b.v0_low和e_b.v1_low均被访问过,说明e_b.v0_low和e_b.v1_low已经在同一个连通分量里了,则跳过e_b,访问E中下一条边,方法是:
4.1.如果root[e_b.v0_low]=-1,说明e_b.v0_low和e_b.v1_low均未被访问过,e_b.v0_low和e_b.v1_low所构成的边是第一次访问,转4.2;否则,说明e_b.v0_low和e_b.v1_low均被访问过且已经处于同一个连通分量son[root[e_b.v0_low]]中,不需要进行合并操作,转3.4;
4.2.将e_b.v1_low合并到以e_b.v0_low为根顶点的连通分量中,把e_b.v0_low设置成e_b.v0_low和e_b.v1_low两个顶点的根顶点,e_b.v0_low和e_b.v1_low的root向量对应的元素均设置为e_b.v0_low,即令root[e_b.v0_low]=e_b.v0_low,root[e_b.v1_low]=e_b.v0_low;
4.3.在e_b.v0_low对应的son向量中插入e_b.v0_low和e_b.v1_low的ID号,即在连通分量son[e_b.v0_low]中添加新的顶点信息,即将e_b.v0_low插入到son[e_b.v0_low],将e_b.v1_low也插入到son[e_b.v0_low]),转3.4;
第五步、根据根顶点不同的情况对顶点的父子关系进行路径压缩,并对根顶点不同的两个连通分量进行合并,方法是:
5.1.如果root[e_b.v0_low]=-1,转5.2,否则,转5.3;
5.2.此时顶点e_b.v1_low已被...
【专利技术属性】
技术研发人员:白皓,甘新标,张一鸣,李东升,贾孟涵,谭雯,司嘉奇,来宪龙,李海莉,来乐,宣栋梁,苏鸿宇,王庆坤,徐云鹏,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。