CN116185662B - 基于NetCDF和非阻塞通信的异步并行I/O方法 - Google Patents

基于NetCDF和非阻塞通信的异步并行I/O方法 Download PDF

Info

Publication number
CN116185662B
CN116185662B CN202310137672.6A CN202310137672A CN116185662B CN 116185662 B CN116185662 B CN 116185662B CN 202310137672 A CN202310137672 A CN 202310137672A CN 116185662 B CN116185662 B CN 116185662B
Authority
CN
China
Prior art keywords
data
netcdf
mpi
data block
grid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310137672.6A
Other languages
English (en)
Other versions
CN116185662A (zh
Inventor
逄仁波
于福江
张宇
原野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NATIONAL MARINE ENVIRONMENTAL FORECASTING CENTER
Original Assignee
NATIONAL MARINE ENVIRONMENTAL FORECASTING CENTER
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NATIONAL MARINE ENVIRONMENTAL FORECASTING CENTER filed Critical NATIONAL MARINE ENVIRONMENTAL FORECASTING CENTER
Priority to CN202310137672.6A priority Critical patent/CN116185662B/zh
Publication of CN116185662A publication Critical patent/CN116185662A/zh
Application granted granted Critical
Publication of CN116185662B publication Critical patent/CN116185662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开一种基于NetCDF和非阻塞通信的异步并行I/O方法,涉及异步并行I/O处理技术领域,方法首先响应于I/O数据输出命令,计算进程将I/O数据保存至发送缓冲区,再通过非阻塞通信将I/O数据发送至I/O主进程;I/O主进程对接收的I/O数据进行整合切割,得到均匀连续的数据块;I/O主进程将切割后的数据块分发至所有I/O进程;所有I/O进程调用NetCDF或PNetCDF库的标准API接口完成并行I/O数据输出。本发明实现了基于NetCDF格式的并行异步I/O输出,解决了同步并行I/O方法效率低的问题,同时兼容NetCDF和PNetCDF两种库。

Description

基于NetCDF和非阻塞通信的异步并行I/O方法
技术领域
本发明涉及异步并行I/O处理技术领域,特别是涉及一种基于NetCDF格式和非阻塞通信的异步并行I/O方法。
背景技术
NetCDF(Network Common Data Form)是一种自描述、与机器无关、基于数组的科学数据格式,因其适用于各种硬件平台以及强大的数据提取、插值和显示能力,广泛应用于海洋、大气和地球科学模式中,也被国家海洋环境预报中心研发的国内自主海洋环流数值模式MaCOM(Mass Conservation Ocean Model)作为模式I/O(Input/Output)的文件格式。其中,海洋环流数值模式常用的同步并行I/O数据输出流程如图1所示,采用NetCDF和PNetCDF库实现I/O的读写操作。然而,随着海洋环流数值模式输出数据量越发庞大,同步I/O输出方法中存在计算进程等待时间过长的缺陷,严重影响了海洋环流数值模式的整体运行效率。为此,海洋环流数值模式中逐渐开始应用异步并行I/O方法,通过将I/O操作迁移到独立的I/O进程上来减少计算进程上的I/O等待时间,提升I/O输出效率,从而提升海洋环流数值模式的整体运行效率。
但是,目前在海洋环流数值模式应用第三方库中异步并行I/O方法的过程中,仍然存在着例如XIOS(XML IO Server)库和CFIO(Climate Fast I/O)库中异步并行I/O方法无法同时兼容NetCDF和PNetCDF两种库以及无法指定调用非阻塞通信来提高效率的问题。
发明内容
本发明的目的是提供一种基于NetCDF和非阻塞通信的异步并行I/O方法,可在提高运行效率的同时,兼容NetCDF库和PNetCDF库。
为实现上述目的,本发明提供了如下方案:
一种基于NetCDF和非阻塞通信的异步并行I/O方法,包括:
步骤1:响应于I/O数据输出命令,计算进程将I/O数据保存至发送缓冲区;
步骤2:计算进程采用非阻塞通信技术将所述发送缓冲区中的I/O数据发送至I/O主进程;
步骤3:所述I/O主进程对接收到的I/O数据进行整合切割,得到均匀连续的数据块;
步骤4:所述I/O主进程将切割后的数据块分发至所有I/O进程;
步骤5:所述I/O进程基于所述数据块,调用NetCDF或者PNetCDF库的标准API(Application Programming Interface)接口进行I/O数据输出。
可选的,在发送缓冲区中的数据向I/O主进程发送时,所述发送缓冲区处于写保护状态;
在步骤1之后,还包括:启动发送缓冲区保护检测,所述发送缓冲区保护检测用于判断每个计算进程的发送缓冲区是否处于写保护状态,所述计算进程在其对应的发送缓冲区处于写保护状态时,保持等待状态。
可选的,所述发送缓冲区的保护机制通过调用MPI_WAIT标准函数实现。
可选的,所述步骤3具体包括:
基于网格分区信息表,对网格数据按照其对应的NetCDF文件全局编号位置进行整合操作,得到整合数据;所述网格数据即接收到的I/O数据;所述网格分区信息表内记录有每个网格数据对应的进程编号和NetCDF文件全局编号;所述整合操作用于将每个进程上的网格数据按照NetCDF文件全局编号进行连续排列整合;
对所述整合数据进行分割操作,得到均匀连续的数据块。
可选的,所述整合操作采用数据块优化访问方法,所述数据块优化访问方法包括数据块切分步骤、数据块排序步骤和数据块插入步骤;所述数据块切分步骤用于将每个进程中全局编号连续的网格数据整合为一个数据块,所述数据块插入步骤用于对整块的连续网格数据进行聚合访问,以实现数据块的插入。
可选的,对所述整合数据进行分割操作,得到均匀连续的目标数据块,具体包括:
当所述I/O进程的数量小于分割余数时,根据 计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,所述第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
可选的,对所述整合数据进行分割操作,得到均匀连续的目标数据块,具体包括:
当所述I/O进程的进程数量大于分割余数时,根据 计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,所述第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
可选的,当调用NetCDF的API接口时,采用nf90_put_var标准函数实现I/O数据的写入。
可选的,当调用PNetCDF库的API接口时,采用nf90mpi_put_var_all标准函数实现I/O数据的写入。
可选的,步骤5在进行I/O数据输出时,采用文件访问优化方法是在所述I/O进程启动时打开所述I/O进程对应的NetCDF文件,并在所述I/O进程结束时关闭所述I/O进程对应的NetCDF文件。
根据本发明提供的具体实施例,公开了以下技术效果:本发明提供一种基于NetCDF和非阻塞通信的异步并行I/O方法,响应于I/O数据输出命令,计算进程将I/O数据保持至发送缓冲区并开启发送缓冲区保护检测;并采用非阻塞通信技术将所述发送缓冲区中的I/O数据发送至I/O主进程;I/O主进程对接收到的I/O数据进行整合切割,得到均匀连续的数据块;然后将数据块并分发至所有I/O进程,I/O进程基于得到的均匀连续的数据块,调用NetCDF或者PNetCDF库的标准API接口进行I/O输出。由于本发明对I/O数据进行了整合切割,得到了均匀连续的数据块,进而基于均匀连续的数据块便可调用NetCDF或者PNetCDF库标准API接口来实现I/O数据输出,解决了第三方XIOS和CFIO库中异步并行I/O方法无法同时兼容NetCDF库和PNetCDF库的问题;同时在计算进程上采用了非阻塞通信,减少了计算进程中I/O数据的等待时间,实现了I/O数据的快速发送。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有基于NetCDF格式的同步并行I/O方法流程图;
图2为本发明实施例中的基于NetCDF和非阻塞通信的异步并行I/O方法流程图;
图3为本发明实施例中的异步并行I/O的流程设计图;
图4为本发明实施例中的数据块访问优化流程示意图;
图5为本发明实施例中的MaCOM模式I/O连续输出十遍一维水平双精度实数的时间统计图;
图6为本发明实施例中的MaCOM模式I/O连续输出十遍二维水平和垂向双精度实数的时间统计图;
图7为本发明实施例中的MaCOM模式I/O输出带宽统计图;
图8为本发明实施例中的MaCOM模式采用不同I/O方法的运行时间图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1所示的是现有技术中海洋数值模式常用的同步并行I/O方法流程图。当海洋数值模式进行I/O数据输出时,每个计算进程先同步调用NetCDF库或PNetCDF库的API接口来启动I/O数据输出,之后计算进程进入等待状态。NetCDF库或PNetCDF库会进一步调用对应的HDF(Hierarchical Data Format)库或者MPI-IO库打开NetCDF文件,再将I/O数据写入该文件中。考虑数据后处理的方便性,数据输出通常要求写入同一个NetCDF文件。当所有I/O数据写入完成后,关闭NetCDF文件输出,所有计算进程结束等待,开始下一个迭代步计算过程。
因此,现有的基于NetCDF文件格式的同步I/O输出方法的缺陷在于计算进程需要等待I/O数据完全写入文件系统后才能继续下一步计算,而全球海洋环流数值模式输出数据量庞大且I/O输出带宽远低于内存访问带宽和网络通信带宽,导致计算进程等待时间过长,影响模式整体运行效率。
本发明的目的是提供一种基于NetCDF和非阻塞通信的异步并行I/O方法,可在提高运行效率的同时,兼容NetCDF库和PNetCDF库。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图2所示,本发明提供的一种基于NetCDF和非阻塞通信的异步并行I/O方法,包括:
步骤1:响应于I/O数据输出命令,计算进程将I/O数据保存至发送缓冲区并开启发送缓冲区保护检测。
步骤2:计算进程采用非阻塞通信技术将所述发送缓冲区中的I/O数据发送至I/O主进程。
步骤3:所述I/O主进程对接收到的I/O数据进行整合切割,得到均匀连续的数据块。
步骤4:所述I/O主进程将切割后的数据块分发至所有I/O进程;
步骤5:所述I/O进程基于所述数据块,调用NetCDF或者PNetCDF库的标准API(Application Programming Interface)接口进行I/O数据输出。
在一些实施例中,由于计算进程采用非阻塞通信技术将I/O数据发送至I/O主进程,而非阻塞通信技术具有投递I/O操作的元数据后立即返回,无需等待数据发送缓冲区内数据完成发送的特征。为保证发送缓冲区内数据准确性,需要设置一个发送缓冲区保护检测机制,该机制保证数据发送完成后才能对发送缓冲区内的数据进行写入,所以步骤1可以通过以下操作实现:
当开始I/O数据输出时,每个计算进程启动发送缓冲区保护检测,来判断具体每个计算进程的数据缓冲区是否处于写保护状态,若计算进程在其对应的发送缓冲区处于写保护状态时,计算进程保持等待状态,若未处于写保护状态时,计算进程进行I/O数据发送的步骤。
其中,发送缓冲区保护检测的保护机制通过调用MPI库中MPI_WAIT(mpi_req,...)标准函数完成,其中mpi_req为非阻塞通信请求参数,计算进程为每个变量的发送缓冲区创建单独的mpi_req参数。若数据发送缓冲区的数据已完成发送,该参数状态会发生变化,MPI_WAIT函数会结束等待状态,并解除发送缓冲区的保护。
在一些实施例中,由于非阻塞通信是减少计算进程上I/O时间的核心技术,所以步骤2可以通过以下操作实现:
通过发送缓冲区保护检测后,调用MPI库中的非阻塞通信API接口,通过非阻塞通信向I/O主进程发送I/O数据。
其中,计算进程的非阻塞通信由调用MPI库中MPI_IGATHERV(mpi_se nd_buf,mpi_req,...)标准函数实现,标准函数中的mpi_send_buf参数用于指定数据发送缓冲区,mpi_req与发送缓冲区保护检测中的参数保持一致。
在计算进程调用MPI_IGATHERV(mpi_send_buf,mpi_req,...)标准函数后,立即返回并继续进行下一步计算,无需等待mpi_send_buf中的数据发送完成,同时开启mpi_send_buf缓冲区的写保护。当数据发送完成后,后台通信系统会自动更新mpi_req状态,从而保证下次重复使用mpi_send_buf时,发送缓冲区保护检测会解除mpi_send_buf的写保护。
在本实施例中,如图3所示,I/O主进程用于接收计算进程发送的I/O数据,并根据NetCDF文件中网格数据排列顺序对不同计算进程发送的数据进行重新排序存放(整合),然后按照I/O进程数量m把整合后的数据连续且均匀地切分成m块(切割),再将切割后的数据分别发送给m个I/O进程(发送),即通过数据整合、切割和发送,将多个计算进程发送的数据均匀连续地切割后发送给m个I/O进程,具体的方法可以如下:
I/O主进程对接收到的I/O数据进行I/O数据的整合,得到整合数据。
I/O主进程对整合数据进行分割操作,得到均匀连续的目标数据块。
I/O进程基于得到的均匀连续的数据块,调用NetCDF或者PNetCDF库的标准API接口进行I/O输出。
在一些实施例中,I/O主进程对接收到的I/O数据进行I/O数据的整合,得到整合数据,具体可以如下:
I/O数据的整合算法以网格分区信息表为基础,该信息表内记录每个网格对应的进程编号和NetCDF文件的全局编号。I/O主进程接收所有计算进程发送的I/O数据后,依次对每个进程上的网格数据按照其对应的NetCDF文件全局编号位置进行插入。在数据排序插入过程中,采用了一种数据块访问优化技术。
如图4所示,数据块访问优化技术将接收的计算进程1-n数据中的网格模块进行数据块切分,并将每个进程上全局编号连续的网格数据整合成一块,例如数据块5和数据块6属于连续的网格数据,因此,将数据块5和数据块6整合为一个数据块。在进行数据块切分之后,将各个切分后的数据块按照编号进行排序,并将排序后的数据块依次进行插入操作。图4示例中的9个网格数据过程若以现有技术中的逐个数据访问方式进行插入,则需要进行9次插入操作;而采用数据块访问优化技术,图4示例中的9个网格数据过程仅需要6次插入操作,从而减少数据访问次数,提高I/O数据整合速度。
在一些实施例中,I/O主进程对整合数据进行分割操作,得到均匀连续的数据块,具体可以如下:
I/O主进程对整合数据进行分割操作的方法包括两种:
当所述I/O进程的数量小于分割余数时,根据 计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,所述第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
当所述I/O进程的进程数量大于分割余数时,根据 计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,所述第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
在一些实施例中,I/O进程基于得到的均匀连续的数据块,调用NetCDF或者PNetCDF库的标准API接口进行I/O输出,具体可以如下:
I/O数据发送由I/O主进程完成,该进程根据数据切割的结果,将切割后的数据发送给所有I/O进程。该发送操作通过调用MPI库中的MPI_SCATTERV(mpi_io_buf,mpi_send_counts,...)标准函数接口完成,mpi_io_buf存放整合排序后的所有I/O进程的数据,mpi_send_couts即切割后每个进程上的网格数据大小local_grids。
每个I/O进程接收到分配的数据块后,所有I/O进程调用NetCDF或者PNetCDF库标准API接口进行I/O输出。其中,I/O主进程也具备调用NetCDF或者PNetCDF库标准API接口进行I/O输出的能力,即I/O主进程同样将数据块分配给自身。
其中调用NetCDF或者PNetCDF库的API接口由用户根据I/O需求进行自主选择。
本发明中的I/O数据输出支持单个I/O进程串行或者多个I/O进程并行输出,同时兼容NetCDF和PNetCDF两种方式。
当用户指定NetCDF库时,模式调用NetCDF库中nf90_put_var(mpi_io_buf,...)标准函数完成数据写入,mpi_io_buf为每个I/O进程写入文件的数据缓冲区。
当用户指定PNetCDF库时,模式调用PNetCDF库的nf90mpi_put_var_all(mpi_io_buf,...)标准函数完成数据写入。
在I/O数据输出时,采用一种文件访问优化方法,即将文件打开和关闭操作从I/O输出中独立出来,I/O进程启动时打开需要输出的NetCDF文件,I/O进程结束时关闭需要输出的NetCDF文件,避免每次I/O输出时频繁打开和关闭NetCDF文件,因而每次模式运行只对同一个NetCDF文件打开和关闭一次,进一步提升I/O输出的效率。
如图3所示,当前I/O数据输出到NetCDF文件后,所有I/O进程进入下一个I/O数据的输出过程,即重复步骤3、步骤4和步骤5中的操作。
综上所述,本发明具有以下优点:1)本发明提出在计算进程上采用的非阻塞通信结合发送缓冲区保护检测方法实现I/O数据快速发送和数据保护是现有NetCDF和PNetCDF基础库以及XIOS和CFIO等扩展库所不具备的功能。在实验测试中,该方法经SYSTEM_CLOCK函数(微秒级时间检测)测试的实际用时为0,效率优于现有的NetCDF和PNetCDF库。2)本发明提出的异步并行I/O并行方法支持单个或多个独立I/O进程的异步并行输出,同时兼容NetCDF和PNetCDF两种库,是现有NetCDF和PNetCDF基础库以及XIOS和CFIO等扩展库所不具备的特性。同时,数据输出采用了一些数据块访问优化技术、连续数据均匀切割算法以及减少NetCDF文件开闭次数来进一步提升I/O输出效率。
实验测试过程如下:
基于国家海洋环境预报中心HPC集群,该集群与MaCOM模式I/O测试相关的软硬件环境配置如下表1所示,与I/O测试相关的MaCOM模式设置如下表2所示。
表1软硬件测试环境配置
软硬件名称 软硬件型号
CPU Intel(R)Xeon(R)CPUE5-2680v4@2.40GHz
内存 128GB
硬件架构 X86_64
操作系统 Linux3.10.0
编译器 Mpiifortversion2021.4.0
编译选项 -O3
MPI库 Intel(R)MPILibrary2021u4
NetCDF库 NetCDF4.7.4
PNetCDF PNetCDF1.12.3
文件系统 GPFS5.0.5
表2FVWAM模式测试设置
名称 具体设置
网格分辨率 全球1/12度(剔除陆地点)
水平一维网格数 5749313个
垂向网格层数 75层
单次测试的I/O输出遍数 10遍
I/O重复测试次数 5次
单精度字节数 4个
双精度字节数 8个
时间统计采用Fortran库中的system_clock(clock,rate)函数,其中clock为时钟数,rate为时钟频率,clock和rate均为双精度整数。针对测试使用的国家海洋环境预报中心HPC集群,count_rate的值为106,即时钟精度达到1微秒。时间统计方法根据计算。
其中,t表示统计的时间,clock_s为开始时钟数,clock_e为结束时钟数,n为统计的次数。
为保证测试结果不受共享网络和文件系统波动的影响,采取不同模式设置交替测试5次,并对同一变量连续输出10遍的方法进行时间统计,具体计算方法为
其中t表示单一变量连续输出10遍的时间,n表示测试次数,tavg表示n次测试后的平均时间。
平均带宽wavg的计算方法为其中s代表单一变量连续输出10遍的文件大小。
基于国家海洋环境预报中心HPC集群,统一采用1024个计算进程运行MaCOM模式,I/O进程数量从1至1024个依次加倍,连续输出十遍一维水平双精度实数(438.64MB)的时间统计以及连续输出十遍二维水平和垂向双精度实数(32.13GB)的时间统计。
如图5和图6所示,计算进程上的I/O时间均小于1微秒,因此通过system_clock函数获取的时间为0,证明本发明提出的异步并行I/O能够极大地减少计算进程上的I/O操作时间。当I/O输出数据由一维增加为二维,采用PNetCDF库的I/O输出比NetCDF库的I/O输出具有更高效率,但计算进程上的I/O时间依然为0,证明本发明在计算进程上采用的非阻塞通信结合发送缓冲区保护检测方法的高效率不受发送数据量增加的影响。随着I/O进程数量增加,每个I/O进程分配的数据减少,增加了I/O进程访问同一文件间资源竞争,导致I/O效率下降,证明本发明中异步并行I/O方法采用任意数量独立I/O进程进行文件输出的方法具有更好扩展性,而同步并行I/O方法中的I/O操作由计算进程完成,无法根据I/O需求指定I/O进程数量,因此同步并行I/O方法存在大规模并行扩展性差的问题。
基于图5和图6的测试结果,利用平均带宽计算公式求出在不同I/O进程数量下分别采用PNetCDF和NetCDF库分别进行一维和二维数据输出的带宽,如图7所示。由图7得出,I/O带宽与I/O进程数量并非成正比,因此需要根据不同应用需求设置I/O进程的数量。本发明提出的异步并行I/O方法可由用户自定义I/O进程数量,从而满足不同应用下取得较高I/O带宽的需求。
基于MaCOM模式对一维海表面高度、纬向风应力、经向风应力、大气长波辐射、大气短波辐射、海表面蒸发和降水差共6个变量,以及二维海水纬向流速、经向流速、垂向流速、盐度、温度共5个变量进行每2小时输出1次,计算7天的全球海洋环流业务预报,本发明的异步并行I/O方法与分别采用NetCDF和PNetCDF库的同步并行I/O方法在不同计算进程下的模式运行时间如图8所示,其中,异步并行I/O方法统一采用4个I/O进程。通过实验表明,本发明的异步并行I/O方法可以有效提升MaCOM模式的运行效率,基于MaCOM业务化运行中通常采用的1024个计算进程来制作7天业务预报,采用异步并行I/O方法的模式运行时间比采用NetCDF的同步并行I/O方法减少了3631.92秒,效率提升了46.47%;采用异步并行I/O方法的模式运行时间比采用NetCDF的同步并行I/O方法减少了2055.9秒,效率提升了32.95%。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1.一种基于NetCDF和非阻塞通信的异步并行I/O方法,其特征在于,包括:
步骤1:响应于I/O数据输出命令,计算进程将I/O数据保存至发送缓冲区;
其中,在发送缓冲区中的数据向I/O主进程发送时,所述发送缓冲区处于写保护状态;
在步骤1之后,还包括:启动发送缓冲区保护检测,所述发送缓冲区保护检测用于判断每个计算进程的发送缓冲区是否处于写保护状态,所述计算进程在其对应的发送缓冲区处于写保护状态时,保持等待状态;
步骤2:计算进程采用非阻塞通信技术将所述发送缓冲区中的I/O数据发送至I/O主进程;
所以步骤2具体包括:
通过发送缓冲区保护检测后,调用MPI库中的非阻塞通信API接口,通过非阻塞通信向I/O主进程发送I/O数据;其中,计算进程的非阻塞通信由调用MPI库中MPI_IGATHERV标准函数实现,标准函数中的mpi_send_buf参数用于指定数据发送缓冲区,mpi_req与发送缓冲区保护检测中的参数保持一致;在计算进程调用MPI_IGATHERV标准函数后,立即返回并继续进行下一步计算,无需等待mpi_send_buf中的数据发送完成,同时开启mpi_send_buf缓冲区的写保护;当数据发送完成后,后台通信系统会自动更新mpi_req状态,从而保证下次重复使用mpi_send_buf时,发送缓冲区保护检测会解除mpi_send_buf的写保护;
步骤3:所述I/O主进程对接收到的I/O数据进行整合切割,得到均匀连续的数据块;
所述步骤3具体包括:
基于网格分区信息表,对网格数据按照其对应的NetCDF文件全局编号位置进行整合操作,得到整合数据;所述网格数据即接收到的I/O数据;所述网格分区信息表内记录有每个网格数据对应的进程编号和NetCDF文件全局编号;所述整合操作用于将每个进程上的网格数据按照NetCDF文件全局编号进行连续排列整合;
对所述整合数据进行分割操作,得到均匀连续的目标数据块;
所述整合操作采用数据块优化访问方法,所述数据块优化访问方法包括数据块切分步骤、数据块排序步骤和数据块插入步骤;所述数据块切分步骤用于将每个进程中全局编号连续的网格数据整合为一个数据块,所述数据块插入步骤用于对整块的连续网格数据进行聚合访问,以实现数据块的插入
步骤4:所述I/O主进程将切割后的数据块分发至所有I/O进程;
步骤5:所述I/O进程基于所述数据块,调用NetCDF或者PNetCDF库的标准API接口进行并行I/O数据输出。
2.根据权利要求1所述的异步并行I/O方法,其特征在于,所述发送缓冲区的保护机制通过调用MPI_WAIT标准函数实现。
3.根据权利要求1所述的异步并行I/O方法,其特征在于,对所述整合数据进行分割操作,得到均匀连续的目标数据块,具体包括:
当所述I/O进程的数量小于分割余数时,根据计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
4.根据权利要求1所述的异步并行I/O方法,其特征在于,对所述整合数据进行分割操作,得到均匀连续的目标数据块,具体包括:
当所述I/O进程的进程数量大于分割余数时,根据计算每个目标数据块中的网格数量;每一所述目标数据块用于分配至一对应的I/O进程,第一余数为所述整合数据的网格数量与I/O进程数量的余数;其中,m为I/O进程数量,all_grids为所述整合数据的网格数量,local_grids为每个目标数据块中的网格数量,k为垂向的网格层数。
5.根据权利要求1所述的异步并行I/O方法,其特征在于,当调用NetCDF的API接口时,采用nf90_put_var标准函数实现I/O数据的写入。
6.根据权利要求1所述的异步并行I/O方法,其特征在于,当调用PNetCDF库的API接口时,采用nf90mpi_put_var_all标准函数实现I/O数据的写入。
7.根据权利要求1所述的异步并行I/O方法,其特征在于,步骤5在进行I/O数据输出时,采用文件访问优化方法在所述I/O进程启动时打开所述I/O进程对应的NetCDF文件,在所述I/O进程结束时关闭所述I/O进程对应的NetCDF文件。
CN202310137672.6A 2023-02-14 2023-02-14 基于NetCDF和非阻塞通信的异步并行I/O方法 Active CN116185662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310137672.6A CN116185662B (zh) 2023-02-14 2023-02-14 基于NetCDF和非阻塞通信的异步并行I/O方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310137672.6A CN116185662B (zh) 2023-02-14 2023-02-14 基于NetCDF和非阻塞通信的异步并行I/O方法

Publications (2)

Publication Number Publication Date
CN116185662A CN116185662A (zh) 2023-05-30
CN116185662B true CN116185662B (zh) 2023-11-17

Family

ID=86439962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310137672.6A Active CN116185662B (zh) 2023-02-14 2023-02-14 基于NetCDF和非阻塞通信的异步并行I/O方法

Country Status (1)

Country Link
CN (1) CN116185662B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005111843A2 (en) * 2004-05-11 2005-11-24 Massively Parallel Technologies, Inc. Methods for parallel processing communication
CN102521209A (zh) * 2011-12-12 2012-06-27 浪潮电子信息产业股份有限公司 一种并行多处理器计算机的设计方法
CN102546808A (zh) * 2012-01-17 2012-07-04 深圳天源迪科信息技术股份有限公司 服务端基于tcp的交互处理方法
CN103677760A (zh) * 2013-12-04 2014-03-26 北京航空航天大学 一种基于Openflow的事件并行控制器及其事件并行处理方法
CN112463739A (zh) * 2019-09-09 2021-03-09 山东省计算中心(国家超级计算济南中心) 基于海洋模式roms的数据处理方法及系统
CN114003385A (zh) * 2021-11-02 2022-02-01 上海索辰信息科技股份有限公司 一种用于提升后处理性能的并行化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100037214A1 (en) * 2008-08-11 2010-02-11 International Business Machines Corporation Method and system for mpi_wait sinking for better computation-communication overlap in mpi applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005111843A2 (en) * 2004-05-11 2005-11-24 Massively Parallel Technologies, Inc. Methods for parallel processing communication
CN102521209A (zh) * 2011-12-12 2012-06-27 浪潮电子信息产业股份有限公司 一种并行多处理器计算机的设计方法
CN102546808A (zh) * 2012-01-17 2012-07-04 深圳天源迪科信息技术股份有限公司 服务端基于tcp的交互处理方法
CN103677760A (zh) * 2013-12-04 2014-03-26 北京航空航天大学 一种基于Openflow的事件并行控制器及其事件并行处理方法
CN112463739A (zh) * 2019-09-09 2021-03-09 山东省计算中心(国家超级计算济南中心) 基于海洋模式roms的数据处理方法及系统
CN114003385A (zh) * 2021-11-02 2022-02-01 上海索辰信息科技股份有限公司 一种用于提升后处理性能的并行化方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Improving the throughput of an atmospheric model using an asynchronous parallel I/O server;Xavier Yepes-Arbos;《universitat politecnica de catalunya barcelonatech》;1-156 *
基于CESM的地球系统模式资源优化策略研究与应用;汤钫宇 等;《中国优秀硕士学位论文全文数据库 基础科学辑》(第8期);A009-13 *
新型高性能计算系统与技术;廖湘科 等;《中国科学》;第46卷(第9期);1175-1210 *

Also Published As

Publication number Publication date
CN116185662A (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
KR20110015439A (ko) 로컬 및 글로벌 데이터 공유
Chen et al. A flow-guided file layout for out-of-core streamline computation
CN113254241B (zh) 一种应用于cfd高性能计算的数据跨进程传输方法
CN110874271A (zh) 一种海量建筑图斑特征快速计算方法及系统
CN105445792A (zh) 一种叠前多次波逆时偏移地震数据处理方法及系统
CN104537125B (zh) 一种基于消息传递接口的遥感影像金字塔并行构建方法
CN116185662B (zh) 基于NetCDF和非阻塞通信的异步并行I/O方法
EP3923155A2 (en) Method and apparatus for processing snapshot, device, medium and product
CN113138859A (zh) 一种基于共享内存池的通用数据存储方法
CN108334532B (zh) 一种基于Spark的Eclat并行化方法、系统及装置
CN111444154B (zh) 一种在单片机系统中高效存储日志文件的方法
CN110162395A (zh) 一种内存分配的方法及装置
CN112614207A (zh) 等值线绘制方法、装置和设备
CN111898276A (zh) 架空线路的模型处理方法、装置、计算机设备和介质
CN116450053A (zh) 数据存储方法、装置、系统、电子设备和存储介质
CN110019343A (zh) 一种新能源气象数据管理方法及系统
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
Faber et al. A comparison of GPGPU computing frameworks on embedded systems
Yang et al. Efficient storage method for massive remote sensing image via spark-based pyramid model
Malinowski et al. A Parallel MPI I/O Solution Supported by Byte-addressable Non-volatile RAM Distributed Cache.
WO2022258022A1 (zh) 一种文件管理的方法、装置、设备和系统
CN110914799B (zh) 一种反序列化方法、装置以及计算设备
CN116662266B (zh) 一种面向NetCDF数据的并行读写方法及系统
CN113282405B (zh) 一种负载调整的优化方法及终端
Li et al. Maprdd: Finer grained resilient distributed dataset for machine learning

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant