System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于分布式乱序数据的并行图分割实现方法技术_技高网

一种基于分布式乱序数据的并行图分割实现方法技术

技术编号:41295148 阅读:3 留言:0更新日期:2024-05-13 14:44
本发明专利技术实施例公开了一种基于分布式乱序数据的并行图分割实现方法,其包括:S1、获得乱序单元数据集E;S2、创建底层数据间node room;S3、通过变量adjnlist确定出乱序单元数据集E中每个节点对应的所有相邻节点;S4、基于数据分发策略,将乱序单元数据集E中的全部节点分发至各进程对应的底层数据区间内,并获取底层数据间node room内每一节点的节点ID的全局索引号以及该节点的所有相邻节点的全局索引号;S5、形成各进程对应的初始线性分区;S6、调用并行图分割工具,完成基于分布式乱序数据的并行图分割过程。本发明专利技术不仅避免了串行环节和硬盘I/O交互,更能够在分布式环境下迅速完成数十GB字节数据的文件读取和图分割,极大提升了并行计算规模和计算效率。

【技术实现步骤摘要】

本专利技术涉及数据仿真,尤其涉及一种基于分布式乱序数据的并行图分割实现方法


技术介绍

1、图分割是实现有限元、有限体积等并行计算的一个极其重要的前序环节。常见的图分割工具有metis、parmetis、、scotch、ptscotch等。图分割工具的使用方式,对并行计算规模和效率具有重大影响。

2、在现有的图分割技术或者方法中,赵钟等人提出了基于metis,设计先串行后并行的方式实现phenglei超大规模网格的并行分区;采用基于分组的文件存储模式和对等模式的文件io机制,针对aiaa workshop客机高升力构型标模做了大规模并行计算;

3、孙乐等人提出了运用panda框架封装的metis图剖分算法将几何网格区域剖分为多个子区域并将子域映射到各进程,各进程贮存子区域内的有关数据(单元、节点、荷载等),针对预紧粘弹性垫层结构复杂粘弹性问题做了大规模测试。

4、金亮等人则提出了基于felac计算平台,采用主从模式,主进程基于metis对全局有限元数据进行任务分割,将对应各子分区的数据和细剖分指令分发到对应从进程,实现超大规模网格的并行分区,针对team problem7基准问题(testing electormagneticanalysis methods)做了三维涡流场亿级自由度大规模测试。

5、王卫杰等人则提出了基于高性能计算并行框架jaumin,实现并行fem程序jems-fd,采用读取网格,生成网格片,然后将网格片分发到计算节点的方式,对舰船电磁耦合做了大规模扩展测试。</p>

6、尽管从上述文献看,phenglei、panda、felac、jaumin等方法均能分别实现有限体积和有限元的大规模计算,但是上述方案在其网格预处理过程中并没有完全脱离串行,导致整体算法较为复杂;另外,当网格预处理是独立模块时,需要先写文件到硬盘,再由求解器从硬盘读文件,增加了不必要的文件io,且需要胖节点(多路)硬件资源,才可在分布式环境对等模式实现10亿、20亿级网格的图分割。


技术实现思路

1、基于此,为解决现有技术所存在的不足,特提出了一种基于分布式乱序数据的并行图分割实现方法。

2、为了实现上述目的,本专利技术的技术方案为:

3、一种基于分布式乱序数据的并行图分割实现方法,其特征在于,包括:

4、s1、在mpi分布式运行环境下,通过进程rank-j读取数据块文件并获得乱序单元数据集e,其中1≤j≤m,m为进程总数,进程rank-j对应的乱序单元数据集e为e-j;

5、s2、创建底层数据间node room并获得网格节点总数nnode及每个节点索引号index,其中,所述底层数据间由若干底层数据区间构成,所述进程rank-j对应的底层数据区间表示为[idmin,idmax]-j;

6、s3、基于乱序单元数据集e,构造变量adjnlist,通过变量adjnlist确定出乱序单元数据集e中每个节点对应的所有相邻节点以形成每个节点与其所有相邻节点的映射关系,同时定义所述变量adjnlist的键key为节点id,键值keyvalue为该节点的所有相邻节点;

7、s4、基于数据分发策略,将乱序单元数据集e中的全部节点分发至各进程对应的底层数据区间内,并获取底层数据间node room内每一节点的节点id的全局索引号以及该节点的所有相邻节点的全局索引号;

8、s5、基于数据分发完成后的各进程对应的底层数据区间内的节点数据按照键key即节点id进行升序排列,进而形成各进程对应的初始线性分区;

9、s6、基于所述各初始线性分区,调用并行图分割工具,完成基于分布式乱序数据的并行图分割过程。

10、可选的,在其中一个实施例中,所述s1中包括

11、s111、定义读取文件操作std::ifstream readmes,进程rank-j通过函数redamesh.tellg()获取待分解的数据块文件所在输入流的入口位置信息,并将所述入口位置信息标记为entryaddress;

12、s112、获取数据块文件所在输入流的出口位置信息,并将所述出口位置信息标记为exitaddress;

13、s113、根据用户定义的进程数量ranksize对数据块文件的长度length进行分解,以获得每个进程相对于入口位置信息entryaddress的地址偏移offsetaddress;

14、s114、基于所述地址偏移offsetaddress,进程rank-j基于第一移动指令readmesh.seekg(offsetaddress,ios::cur)使得指针移动且连续读取自数据块文件内指定长度数据;

15、s115、完成本次读取任务后,进程rank-j基于第二移动指令readmesh.seekg(exitaddress,ios::beg)使得指针移动,将流指针直接跳转到数据块文件所在输入流的出口位置信息exitaddress并等待读取下一个数据块文件。

16、可选的,在其中一个实施例中,所述s2包括通过进程rank-j构造底层数据间noderoom,并用区间[idmin,idmax]表示;具体的包括,

17、s21、通过进程rank-j获得其所对应的数据块文件中的本地节点id最小值以及最大值,本地节点id最小值为local_idmin,本地节点id最大值记为local_idmax;

18、s22、基于本地节点id最小值以及最大值,通过mpi_allreducer运算,获得整个数据块文件上的节点id最小值以及最大值,节点id最小值记为idmin,节点id最大值记为idmax,同时获取网格节点总数nnode及每个节点索引号index;

19、s23、基于进程数量ranksize将区间[idmin,idmax]分为数量为ranksize的若干个区间,则第j个区间[idmin,idmax]-j即为当前进程rank-j的底层数据间。

20、可选的,在其中一个实施例中,所述数据分发策略包括:

21、s41、进程rank-j逐一获取乱序数据集e-j的节点数据,并基于每一节点数据的节点id确定该节点id是否属于进程rank-j对应的底层数据区间[idmin,idmax]-j的索引号区间范围,是则将保留该节点id,否则基于该键即节点id查询其属于哪个底层数据区间,并将该节点数据发送至所查询到的底层数据区间对应到的进程rank-k,进程rank-k为不同于进程rank-j另一任意进程;

22、s42、进程rank-k同步接收进程rank-j所发送的键并结合本地保留的键,确定出全部本地节点id后按照升序顺序将重新排列后节点id对应的节点数据依次放入底层数据区间-k内并将每个本地节点id在当前底层数据区间-k内区间索引位置作为其在底层数据间node room内节点id的全局索引号;

本文档来自技高网...

【技术保护点】

1.一种基于分布式乱序数据的并行图分割实现方法,其特征在于,包括:

2.根据权利要求1所述的基于分布式乱序数据的并行图分割实现方法,其特征在于,所述S1中进程Rank-j读取数据块文件的过程包括

3.根据权利要求1所述的基于分布式乱序数据的并行图分割实现方法,其特征在于,所述S2包括通过进程Rank-j构造底层数据间node room,并用区间[IDmin,IDmax]表示;具体的包括,

4.根据权利要求3所述的基于分布式乱序数据的并行图分割实现方法,其特征在于,所述数据分发策略包括:

【技术特征摘要】

1.一种基于分布式乱序数据的并行图分割实现方法,其特征在于,包括:

2.根据权利要求1所述的基于分布式乱序数据的并行图分割实现方法,其特征在于,所述s1中进程rank-j读取数据块文件的过程包括

3.根据权利要求1所述的基于分布式乱序数据的...

【专利技术属性】
技术研发人员:代民果张群
申请(专利权)人:英特工程仿真技术大连有限公司
类型:发明
国别省市:

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

1