[发明专利]基于连通分量生成优化的超级计算机基准测试加速方法有效

专利信息
申请号: 202110293568.7 申请日: 2021-03-19
公开(公告)号: CN112883241B 公开(公告)日: 2022-09-09
发明(设计)人: 白皓;甘新标;张一鸣;李东升;贾孟涵;谭雯;司嘉奇;来宪龙;李海莉;来乐;宣栋梁;苏鸿宇;王庆坤;徐云鹏 申请(专利权)人: 中国人民解放军国防科技大学
主分类号: G06F16/901 分类号: G06F16/901;G06F16/903
代理公司: 湖南企企卫知识产权代理有限公司 43257 代理人: 任合明
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 连通 分量 生成 优化 超级 计算机 基准 测试 加速 方法
【权利要求书】:

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.若eM,表示边集合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已被访问过,顶点e_b.v0_low未被访问过,把e_b.v0_low插入到以e_b.v1_low的根顶点所对应的连通分量son[root[e_b.v1_low]])中,即把e_b.v0_low合并到以顶点root[e_b.v1_low]为根顶点的连通分量中,并改换e_b.v0_low的根顶点为e_b.v1_low的根顶点,即令root[e_b.v1_low]=root[e_b.v0_low],插入和改换根顶点共同完成了对两个连通分量的合并操作,以root[e_b.v1_low]为根顶点的连通分量增加了新的顶点信息,转3.4;

5.3.如果root[e_b.v1_low]=-1,转5.4,否则,转5.5;

5.4.此时顶点e_b.v0_low已被访问过,顶点e_b.v1_low未被访问过,把e_b.v1_low插入到以e_b.v0_low的根顶点所对应的连通分量son[root[e_b.v0_low])中,即把e_b.v1_low合并到以顶点root[e_b.v0_low]为根顶点的连通分量中,并改换e_b.v1_low的根顶点为e_b.v0_low的根顶点,即令root[e_b.v0_low]=root[e_b.v1_low],插入和改换根顶点共同完成了对两个连通分量的合并操作,以root[e_b.v0_low]为根顶点的连通分量增加了新的顶点信息,转3.4;

5.5.此时root[e_b.v0_low]≠-1且root[e_b.v1_low]≠-1,比较e_b.v0_low和e_b.v1_low对应的连通分量的顶点个数,即比较son[root[e_b.v0_low]]和son[root[e_b.v1_low]]的元素数量,如果son[root[e_b.v0_low]].sizeson[root[e_b.v1_low]].size,size表示向量的元素个数,son[root[e_b.v0_low]].size表示e_b.v0_low的根顶点的子节点的个数,son[root[e_b.v1_low]].size表示e_b.v1_low的根顶点的子节点的个数,把两个顶点的ID对调,使得son[root[e_b.v0_low]]的元素数量大于son[root[e_b.v1_low]]的元素数量;转5.6;

5.6.将e_b.v1_low的根顶点记为root_v2,即令root_v2=root[e_b.v1_low],设置循环变量i,初始化i=1;

5.7.若i=son[root_v2].size,转3.4,否则,转5.8;

5.8.对以root[e_b.v0_low]为根顶点的连通分量son[root[e_b.v0_low]]中顶点的父子关系进行路径压缩,把son[root_v2]中的每个元素均调整为root[e_b.v0_low]的直接子顶点,使得son[root_v2]中的每个元素与e_b.v0_low的根顶点之间不出现中间层级的顶点;路径压缩方法是:把son[root_v2]中的第i个元素即顶点son[root_v2][i]的根顶点设置为root[e_b.v0_low],即令root[son[root_v2][i]]=root[e_b.v0_low],并把顶点som[root_v2][i]插入连通分量son[root[e_b.v0_low]];

5.9.令i=i+1,转5.7;

第六步、找出图G中所有连通分量的信息,采用连通分量对图G进行划分,采用scatter发散操作将采用连通分量进行划分后的图G分布至超级计算机各处理节点;

第七步、BFS搜索与验证:随机生成一个根顶点v,结合邻接矩阵A中所存储的边信息,以v为源点对采用连通分量进行划分过的图G进行BFS搜索,输出生成树作为搜索结果,记录Graph500有效计时时间t,并验证搜索得到的BFS生成树是否与原图信息匹配;该过程循环64次,且分别对每次BFS搜索部分计时;

第八步、计算图测试性能的评价值,即64棵生成树的BFS遍历测试性能值平均值,获得测试结果并输出;

第九步、结束。

2.如权利要求1所述的一种基于连通分量生成优化的超级计算机基准测试加速方法,其特征在于, 第六步找出图G中所有连通分量的信息,采用连通分量对图G进行划分,采用scatter发散操作将采用连通分量进行划分后的图G分布至超级计算机各处理节点的方法是:

6.1.设置顶点序号j、连通分量序数k,初始化j=0,k=1;

6.2.若j=N-1,说明所有顶点均已遍历完,此时k就是图G中连通分量的个数,转第七步,否则,转6.3;

6.3.判断序号为j的顶点vj的根顶点是否是自身,即如果root[vj]≠vj,说明顶点vj不是所在连通分量的根顶点,转6.5;否则,说明顶点vj是第k个连通分量的根顶点,son[vj]存储了第k个连通分量的所有顶点,获取了第k个连通分量的所有顶点;令k=k+1;转6.4;

6.4.把son[vj]中的顶点采用scatter发散操作分布至超级计算机相同或相近的物理节点;

6.5.令j=j+1,转6.2。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110293568.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top