基于海洋模式ROMS的数据处理方法及系统技术方案

技术编号:27584791 阅读:53 留言:0更新日期:2021-03-10 09:59
本发明专利技术公开了一种基于海洋模式ROMS的数据处理方法及系统,根据计算节点数量N把输入文件拆分为N份子输入文件,每个计算节点的计算进程分别读取对应的子输入文件,每个计算节点在计算完成后通过其输出进程输出子计算结果;最后合并N份子计算结果输出计算结果。使用分布式I/O替代海洋模型ROMS原有的串行I/O技术,将输入文件先根据计算节点数量进行分块,每个计算进程独立读取分块数据进行计算,并将本进程所计算的结果输出到一个独立的文件,在各独立文件中包含了本计算区域的分块信息,以便在后续处理中将其合并,实现一种高效的I/O技术,具有提高模式总体运行速度、降低通讯时间、实现负载均衡、减少输出和读取时间等优点。减少输出和读取时间等优点。减少输出和读取时间等优点。

【技术实现步骤摘要】
基于海洋模式ROMS的数据处理方法及系统


[0001]本专利技术属于数据处理
,具体地说,是涉及一种基于海洋模式ROMS的数据处理方法及系统。

技术介绍

[0002]海洋数值模式,是把原始海洋方程组离散求解的过程。海洋模式ROMS是一个开源的三维区域海洋模型,由Rutger大学海洋与海岸科学研究所与UCLA两校共同研究开发,被广泛应用于海洋及河口地区的水动力及水环境模拟。由于模式涉及较大的计算区域以及复杂的求解过程,因此具有浩大的计算规模,随着计算区域的扩大以及计算精度的提升,使得计算能力以及大量数据输出能力成为系统整体性能提升的关键。
[0003]海洋模式的I/O特点表现为在计算间隔中出现密集的并发I /O 请求,在确定的阶段读写数据。模式读入数据,以设定积分步长,完成计算任务,在一定时间间隔把计算结果输出到文件。模拟数据在满足一定精度和分辨率需求时,表现形式复杂,具有如下主要特点:数据规模大,部分情况达到百TB 量级;数据维数多,包括三维或四维数据;数据格式多,主要分为NetCDF、GRIB、HDF 等;数据文件种类多,包括模拟数据、重启动数据等等。
[0004]现阶段,海洋数值模式ROMS中的计算部分已实现了多节点并行计算,但是在I/O 模块依然采用串行方式,成为了ROMS整体性能提升的一个瓶颈。
[0005]如图1所示的是现有ROMS 模式的串行I/O的方式:d表示模式的输入数据,输入数据由一个进程P单独按顺序接收,然后按照数据与进程的对应关系将其分发到对应的N个计算进程C中,计算进程C完成相应的计算之后会产生相对应的N份数据,输出进程O将N个计算进程的数据收集,生成一个数据文件作为输出文件输出。
[0006]现有的ROMS的I/O存在如下问题:1、由一个单进程P进行数据的读取,并通过MPI通信把需要计算的数据分发到计算节点: 1)由于是单单节点单进程读取数据文件,而模式数据文件通常比较大,经常存在内存不足导致无法读取的问题;2)在数据分发过程产生了大量的MPI通信,造成了根进程过多的负担,影响总体ROMS模式的性能;3)由于是单进程读取,无法发挥超算并行读取的能力。
[0007]2、在计算完成之后,计算数据生成文件的过程与读入类似,需要从多个计算节点把计算数据通过MPI交互到单一输出进程O中进行写入文件:1)在数据收集过程中,需要通过MPI进行数据的传输及同步,会导致进程之间的等待;2)单节点内存小会导致大的模式数据无法写入文件的问题。

技术实现思路

[0008]本专利技术的目的在于提供一种基于海洋模式ROMS的数据处理方法及系统,通过改善ROMS系统的输入输出进程,改善了现有ROMS系统存在的上述技术问题。
[0009]为解决上述技术问题,本专利技术采用以下技术方案予以实现:提出一种基于海洋模式ROMS的数据处理方法,包括:根据计算节点数量N把输入文件拆
分为N份子输入文件;每个计算节点的计算进程分别读取对应的子输入文件;每个计算节点在计算完成后通过其输出进程输出子计算结果;合并N份子计算结果输出计算结果。
[0010]首先,根据计算节点数量N把输入文件拆分为N份子输入文件,具体为:根据计算节点数量N将输入文件拆分为N=NtileI*NtileJ块,每块为一份子输入文件;记录每块子输入文件的核心计算区域分块位置和/或核心编号。
[0011]进一步的,每个计算节点的计算进程分别读取对应的子输入文件,具体为:每个计算节点的计算进程基于核心计算区域分块位置和/或核心编号读取对应的子输入文件。
[0012]进一步的,在每个计算节点通过其输出进程输出子计算结果时,所述方法还包括:在子计算结果中添加分块属性信息;所述分块属性信息包括所述核心计算区域分块位置和/或所述核心编号。
[0013]进一步的,合并N份子计算结果输出计算结果,具体为:每份子计算结果生成一个子输出文件;基于所述分块属性信息合并子输出文件得到输出结果。
[0014]提出一种基于海洋模式ROMS的数据处理系统,包括:N个计算节点;每个计算节点包括一个计算进程;所述系统还包括:拆分模块,用于根据计算节点数量N把输入文件拆分为N份子输入文件;输出进程,包含于每个计算节点中;输出模块,用于输出计算结果;其中,每个计算节点的计算进程,用于分别读取其对应的子输入文件;每个计算节点在计算完成后通过其输出进程输出子计算结果;所述输出模块合并N份子计算结果输出计算结果。
[0015]进一步的,所述拆分模块包括:拆分单元,用于根据计算节点数量N将输入文件拆分为N=NtileI*NtileJ块,每块为一份子输入文件;记录单元,用于记录每块子输入文件的核心计算区域分块位置和/或核心编号。
[0016]进一步的,每个计算节点的计算进程基于核心计算区域分块位置和/或核心编号读取对应的子输入文件。
[0017]进一步的,每个计算节点的输出进程,还用于在子计算结果中添加分块属性信息;所述分块属性信息包括所述核心计算区域分块位置和/或所述核心编号。
[0018]进一步的,所述输出模块,具体用于:将每份子计算结果生成一个子输出文件;并基于所述分块属性信息合并子输出文件得到输出结果。
[0019]本专利技术提出的基于海洋模式ROMS的数据处理方法及系统,使用分布式I/O替代海洋模型ROMS原有的串行I/O技术,将输入文件先根据计算节点数量进行分块,每个计算进程独立读取分块数据进行计算,并将本进程所计算的结果输出到一个独立的文件,在各独立文件中包含了本计算区域的分块信息,以便在后续处理中将其合并,实现一种高效的I/O技术;与现有技术相比,本专利技术的优点和积极效果是:1、提升模式模拟速度:由于实现了海洋模式ROMS的I/O模块的并行化,突破了串行I/O的瓶颈,提升了模式整体的模拟速度,为实现业务化运行提供了有力保障。
[0020]2、减少输出时间:单进程写出一个输出文件,减少了进程与进程之间写出一个文件的依赖关系,输出文件的碎片化,减少了输出时间,速度增快,也会减少因单进程处理输出文件出现的误差。
[0021]3、 减少通讯时间:由于各个核心均输出自己计算部分的数据,不再需要发送数据,有效降低了通讯时间。
[0022]4、减少读取时间:单进程文件的读取是输入文件单进程的读取,进行拆分,然后分
配进入各个进程,但是碎片化的数据文件减少了数据读取与分割的时间,能够改变I/O的整体速度。
[0023]5、实现负载均衡:如果将输出数据收集到根进程,就会对根进程所在核心的内存造成很大的负担。而碎片化输出,各个进程因为无需收集和分发,对计算资源和内存的消耗都比较均衡。不会对某一进程造成过大负担。
[0024]结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其他特点和优点将变得更加清楚。
附图说明
[0025]图1 为现有海洋模式ROMS的串行I/O方式示意图;图2为本专利技术提出的基于海洋模式ROMS的数据处理方法的流程图;图3为本专利技术提本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于海洋模式ROMS的数据处理方法,其特征在于,包括:根据计算节点数量N把输入文件拆分为N份子输入文件;每个计算节点的计算进程分别读取对应的子输入文件;每个计算节点在计算完成后通过其输出进程输出子计算结果;合并N份子计算结果输出计算结果。2.根据权利要求1所述的基于海洋模式ROMS的数据处理方法,其特征在于,根据计算节点数量N把输入文件拆分为N份子输入文件,具体为:根据计算节点数量N将输入文件拆分为N=NtileI*NtileJ块,每块为一份子输入文件;记录每块子输入文件的核心计算区域分块位置和/或核心编号。3.根据权利要求2所述的基于海洋模式ROMS的数据处理方法,其特征在于,每个计算节点的计算进程分别读取对应的子输入文件,具体为:每个计算节点的计算进程基于核心计算区域分块位置和/或核心编号读取对应的子输入文件。4.根据权利要求2所述的基于海洋模式ROMS的数据处理方法,其特征在于,在每个计算节点通过其输出进程输出子计算结果时,所述方法还包括:在子计算结果中添加分块属性信息;所述分块属性信息包括所述核心计算区域分块位置和/或所述核心编号。5.根据权利要求4所述的基于海洋模式ROMS的数据处理方法,其特征在于,合并N份子计算结果输出计算结果,具体为:每份子计算结果生成一个子输出文件;基于所述分块属性信息合并子输出文件得到输出结果。6.一种基于海洋模式ROMS的数据处理...

【专利技术属性】
技术研发人员:刘光亮刘鑫张洁王勇潘景山
申请(专利权)人:山东省计算中心国家超级计算济南中心
类型:发明
国别省市:

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

1