一种异步I/O适配方法、系统、存储介质及电子设备转让专利

申请号 : CN202210958106.7

文献号 : CN115033529B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李锐喆赵彤

申请人 : 北京卡普拉科技有限公司

摘要 :

本申请涉及异步I/O适配技术领域,公开了一种异步I/O适配方法、系统、存储介质及电子设备。所述方法包括:响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。具有良好的通用性和易用性,实现了多种应用文件格式I/O请求信息到基础文件格式I/O请求信息的转换,可扩展性强;既能面向多种应用文件格式,又能对接基本异步I/O系统。

权利要求 :

1.一种异步I/O适配方法,其特征在于,所述方法包括:响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基本文件格式的I/O请求信息;以及,分别根据各个基本文件格式的I/O请求信息,向基本文件格式的异步I/O系统发起相应的基础I/O请求;

其中,所述基本文件格式包括编程语言或MPI‑IO用文件访问命令直接进行操作的文件格式;所述应用文件格式包括为了便于应用程序的访问和对数据的使用而提供的基于基本文件格式的文件格式;所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,包括:获取所述目标I/O异步执行区域的所述目标通信域内的所有进程;

在所述所有进程的进程间进行联合分析,确定所述所有进程中各个未响应的应用文件格式I/O请求的各个变量标识;

分别根据各个变量标识,确定各进程内所述变量标识对应的应用文件格式I/O请求集,以及,确定所述变量标识对应变量的全局计算空间信息和并行剖分的信息。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于创建指令,根据目标通信域创建应用文件格式I/O请求的目标I/O异步执行区域。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于所述目标I/O异步执行区域的等待完成指令,获取所述目标I/O异步执行区域的所有基础I/O请求;

向基本文件格式的异步I/O系统发送等待完成指令,以使所述基本文件格式的异步I/O系统完成所述目标I/O异步执行区域的所有基础I/O请求的响应。

4.根据权利要求2所述的方法,其特征在于,所述方法还包括:当在任意I/O异步执行区域之外检测到集合方式的应用文件格式I/O请求时,对所述集合方式的应用文件格式I/O请求进行进程间的联合分析,生成对应的基本文件格式的I/O请求信息;

根据所述基本文件格式的I/O请求信息,向基本文件格式的异步I/O系统发起基础I/O请求;

向基本文件格式的异步I/O系统发送等待完成指令,以使所述基本文件格式的异步I/O系统完成所述集合方式的应用文件格式I/O请求的响应。

5.根据权利要求1所述的方法,其特征在于,在所述目标I/O异步执行区域内发起的所有应用文件格式I/O请求,均按照异步I/O请求进行处理。

6.根据权利要求2所述的方法,其特征在于,所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求满足预设条件,所述预设条件包括:应用文件格式I/O请求的当前状态为未响应;

应用文件格式I/O请求无对应的通信域,或者应用文件格式I/O请求对应的通信域与所述目标I/O异步执行区域的通信域相同。

7.根据权利要求1所述的方法,其特征在于,还包括:

响应于应用文件格式的读指令或写指令,获取所述读指令或写指令对应的应用文件格式I/O请求;

将所述应用文件格式I/O请求的当前状态标记为未响应,并保存所述应用文件格式I/O请求的第一信息。

8.根据权利要求7所述的方法,其特征在于,所述第一信息,包括以下至少一项:应用文件格式I/O请求对应的通信域;

应用文件格式I/O请求的读或写标志信息;

应用文件格式I/O请求对应的文件名和在文件中的偏移量位置;

应用文件格式I/O请求对应变量的全局多维计算空间信息;

应用文件格式I/O请求对应变量在当前进程内的局部计算空间信息;

指向该应用文件格式I/O请求对应变量在当前进程内的内存数据空间的指针。

9.根据权利要求1所述的方法,其特征在于,所述生成对应的基本文件格式的I/O请求信息,包括:分别根据各个变量标识对应的文件名和在文件中的偏移量位置,生成与各个应用文件格式I/O请求对应的基本文件格式的I/O请求信息。

10.根据权利要求1 8中任一项所述的方法,其特征在于,在所述对各个未响应的应用~文件格式I/O请求进行进程间的联合分析,生成对应的基本文件格式的I/O请求信息之后,还包括:分别将各个未响应的应用文件格式的I/O请求的当前状态标记为已响应。

11.一种异步I/O适配系统,其特征在于,包括:

转换模块,用于响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基本文件格式的I/O请求信息;以及,分别根据各个基本文件格式的I/O请求信息,向基本文件格式的异步I/O系统发起相应的基础I/O请求;

其中,所述基本文件格式包括编程语言或MPI‑IO用文件访问命令直接进行操作的文件格式;所述应用文件格式包括为了便于应用程序的访问和对数据的使用而提供的基于基本文件格式的文件格式;所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,包括:获取所述目标I/O异步执行区域的所述目标通信域内的所有进程;

在所述所有进程的进程间进行联合分析,确定所述所有进程中各个未响应的应用文件格式I/O请求的各个变量标识;

分别根据各个变量标识,确定各进程内所述变量标识对应的应用文件格式I/O请求集,以及,确定所述变量标识对应变量的全局计算空间信息和并行剖分的信息。

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储的计算机程序,当被一个或多个处理器执行时,实现如权利要求1 10中任一项所述的方法。

~

13.一种电子设备,其特征在于,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述存储器和所述一个或多个处理器之间互相通信连接,当所述计算机程序被所述一个或多个处理器执行时,执行如权利要求1 10中任一项所述的方法。

~

说明书 :

一种异步I/O适配方法、系统、存储介质及电子设备

技术领域

[0001] 本申请涉及异步I/O适配技术领域,特别地涉及一种异步I/O适配方法、系统、存储介质以及电子设备。

背景技术

[0002] 随着应用需求的发展、计算机处理能力的提高,应用所处理的数据量不断增加,从文件系统中读取和写入的数据量也不断增大。在当前计算机的发展中,I/O(Input/Output,
简称I/O)读写速度的增长远慢于计算能力的增长,这使得数据I/O成为大多数应用程序的
性能瓶颈。
[0003] 在计算机系统中,数据需要以文件格式的方式存储。为了对接存储系统,提供了位于底层的基本文件格式(比如,C/C++和Fortran等编程语言以及MPI‑IO等能用文件访问命
令直接进行操作的文件格式)。为了便于应用程序的访问和用户对数据的使用,提供了基于
基本格式的应用文件格式,特别是带有元信息的文件格式及其使用接口。
[0004] 在相关技术中,对应于多级文件格式,异步读/写技术也应具有层次体系,其中,既需要对接基本文件格式的异步读/写系统(简称基本异步读/写系统),也需要对接应用文件
格式的异步读/写适配系统。而当前已有基础文件格式的异步I/O系统(简称基本异步I/O系
统)的技术,但如何处理针对应用文件格式的异步I/O适配仍是亟需解决的问题。

发明内容

[0005] 针对上述问题,本申请提出一种异步I/O适配方法、系统、存储介质以及电子设备,以至少解决相关技术中存在的问题。
[0006] 本申请的第一个方面,提供了一种异步I/O适配方法,所述方法包括:
[0007] 响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进程间的联
合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基础文件格式的I/O
请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。
[0008] 在一些实施例中,所述方法还包括:
[0009] 响应于所述目标I/O异步执行区域的等待完成指令,获取所述目标I/O异步执行区域的所有基础I/O请求;
[0010] 向基础文件格式的异步I/O系统发送等待完成指令,以使所述基础文件格式的异步I/O系统完成所述目标I/O异步执行区域的所有基础I/O请求的响应。
[0011] 在一些实施例中,所述方法还包括:
[0012] 当在任意I/O异步执行区域之外检测到集合方式的应用文件格式I/O请求时,对所述集合方式的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的
I/O请求信息;
[0013] 根据所述基础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起基础I/O请求;
[0014] 向基础文件格式的异步I/O系统发送等待完成指令,以使所述基础文件格式的异步I/O系统完成所述集合方式的应用文件格式I/O请求的响应。
[0015] 在一些实施例中,所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求满足预设条件,所述预设条件包括:
[0016] 应用文件格式I/O请求的当前状态为未响应;
[0017] 应用文件格式I/O请求无对应的通信域,或者应用文件格式I/O请求对应的通信域与所述目标I/O异步执行区域的通信域相同。
[0018] 在一些实施例中,还包括:
[0019] 响应于应用文件格式的读指令或写指令,获取所述读指令或写指令对应的应用文件格式I/O请求;
[0020] 将所述应用文件格式I/O请求的当前状态标记为未响应,并保存所述应用文件格式I/O请求的第一信息。
[0021] 在一些实施例中,所述第一信息,包括以下至少一项:
[0022] 应用文件格式I/O请求对应的通信域;
[0023] 应用文件格式I/O请求的读或写标志信息;
[0024] 应用文件格式I/O请求对应的文件名和在文件中的偏移量位置;
[0025] 应用文件格式I/O请求对应变量的全局多维计算空间信息;
[0026] 应用文件格式I/O请求对应变量在当前进程内的局部计算空间信息;
[0027] 指向该应用文件格式I/O请求对应变量在当前进程内的内存数据空间的指针。
[0028] 在一些实施例中,所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息,包括:
[0029] 获取所述目标I/O异步执行区域的所述目标通信域内的所有进程;
[0030] 在所述所有进程的进程间进行联合分析,确定所述所有进程中各个未响应的应用文件格式I/O请求的各个变量标识;
[0031] 分别根据各个变量标识,确定各进程内所述变量标识对应的应用文件格式I/O请求集,以及,确定所述变量标识对应变量的全局计算空间信息和并行剖分的信息;
[0032] 分别根据各个变量标识对应的文件名和在文件中的偏移量位置,生成与各个应用文件格式I/O请求对应的基础文件格式的I/O请求信息。
[0033] 在一些实施例中,在所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息之后,还包括:
[0034] 分别将各个未响应的应用文件格式的I/O请求的当前状态标记为已响应。
[0035] 本申请的第二个方面,提供了一种异步I/O适配系统,所述系统包括:
[0036] 转换模块,用于响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求
进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基
础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。
[0037] 本申请的第三个方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储的计算机程序,可被一个或多个处理器执行,用以实现如上所述的方法。
[0038] 本申请的第四个方面,提供了一种电子设备,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述存储器和所述一个或多个处理器之间互相通信连接,
该计算机程序被所述一个或多个处理器执行时,实现如上所述的方法。
[0039] 与现有技术相比,本申请的技术方案具有以下优点或有益效果:
[0040] 具有良好的通用性和易用性,实现了多种应用文件格式I/O请求信息到基础文件格式I/O请求信息的自动转换,可扩展性强;既能面向多种应用文件格式(比如,NetCDF/
PNetCDF等),又能对接基本异步I/O系统,使得使用任意应用文件格式的程序都能便捷和高
效地获得异步I/O功能的加速效果。

附图说明

[0041] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于所属领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根
据提供的附图获得其他的附图。
[0042] 图1为本申请实施例提供的一种异步I/O适配方法的流程图;
[0043] 图2为本申请实施例提供的一种异步I/O适配系统的示意图;
[0044] 图3为本申请实施例提供的一种电子设备的连接框图。

具体实施方式

[0045] 以下将结合附图及实施例来详细说明本申请的实施方式,借此对本申请如何应用技术手段来解决技术问题,并达到相应技术效果的实现过程能充分理解并据以实施。本申
请实施例以及实施例中的各个特征,在不相冲突的前提下可以相互结合,所形成的技术方
案均在本申请的保护范围之内。
[0046] 在计算机系统中,数据需要以文件格式的方式存储。为了对接存储系统,提供了位于底层的基本文件格式(基本文件格式通常没有一种特定的约束规范,属于一种C/C++和
Fortran等编程语言,以及MPI‑IO等能用文件访问命令直接进行操作的文件格式)。为了便
于应用程序的访问和用户对数据的使用,提供了基于基本格式的应用文件格式,特别是带
有元信息的文件格式及其使用接口。例如在地球科学和数值预报领域,NetCDF及其并行版
本PNetCDF是一种常用的应用文件格式,其制定了描述变量名、变量类型、变量维度、时间信
息等元数据的规则,提供了一系列的专用文件访问接口。
[0047] 对应于多级文件格式,异步I/O技术也应具有层次体系,其中既需要对接基本异步I/O系统,也需要对接应用文件格式的异步I/O适配方法或系统。当前已有基本异步I/O系统
的技术,但还缺乏面向应用文件格式的异步I/O适配的系统技术。
[0048] 鉴于此,本申请提出一种异步I/O适配方法、系统、存储介质以及电子设备,以至少解决如上所述的问题。
[0049] 需要说明的是,应用文件格式通常会为元信息和数据分别提供访问接口。一般说来,文件中的元信息内容不多且读写开销不大,无需使用异步I/O功能加速。因此异步I/O适
配方法或系统的设计仅需考虑对数据的读写。要使应用文件格式的数据读写能使用基本异
步I/O系统,一个主要挑战是如何从获取到驱动基本异步I/O系统的所需信息。一种直观的
解决方案是改造应用文件格式的已有接口,但这种方案不仅要求修改应用文件格式的管理
程序,还要求大量修改应用程序,因此其不可取。另一种解决方案是设计相应功能模块,以
从应用文件格式的接口中自动提取出基本异步I/O系统所需的信息,实现应用文件格式接
口对异步I/O系统的自动驱动。在实际的应用过程中这种解决方案能最小化对应用程序的
修改,实用性更高。
[0050] 应用的并行文件格式的数据访问,通常会提供面向MPI(Message Passing Interface,简称MPI)通信域的文件并行访问接口(如PNetCDF提供的ncmpi_*接口),其中包
括系列集合操作接口(如PNetCDF的ncmpi_put_*_all、ncmpi_get_*_all、ncmpi_wait_all
等接口),各集合操作接口会导致同一通信域内所有进程间的同步;其中还可能包括发起异
步数据读写请求的接口(如PNetCDF的ncmpi_iput_*、ncmpi_iget_*等),这些接口所产生的
请求在调用相应集合操作接口(如PNetCDF的ncmpi_wait_all)时确认得以完成。此外,应用
的并行文件格式的数据访问,通常还提供了无需通信域的非集合操作接口,以兼容原有的
串行文件格式。
[0051] 实施例一
[0052] 本实施例提供一种异步I/O适配方法,图1为本申请实施例提供的一种异步I/O适配方法的流程图,如图1所示,本实施例的方法包括:
[0053] S110、响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进程
间的联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基础文件格
式的I/O请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。
[0054] 在一些实施例中,还包括:
[0055] 响应于创建指令,根据目标通信域创建应用文件格式I/O请求的目标I/O异步执行区域。
[0056] 在一些实施例中,在所述目标I/O异步执行区域内发起的所有应用文件格式I/O请求,均为异步I/O请求。
[0057] 需要说明的是,本实施例所公开的方法可应用于各种应用文件格式的数据读写操作(所述数据读写操作包括在一些应用程序中的数据读写操作),连接面向基础文件格式的
异步I/O系统(简称基本异步I/O系统)。
[0058] 可选的,应用程序可根据相应的接口能够便捷设定I/O请求以异步方式执行的区域。其中,在一个I/O异步执行区域内,应用程序所发起的应用文件格式的数据I/O请求,均
按照异步I/O请求的方式进行处理。
[0059] 可选的,应用程序还可以根据相应的接口在I/O异步执行区域内进行进程间同步,支持等待同一区域所有异步I/O请求都已执行完毕的功能。
[0060] 可选的,在具体功能实现上,分别提供开启I/O异步执行区域的接口、结束I/O异步执行区域的接口、区域内进程间同步接口、等待区域内所有异步I/O请求完成的接口。
[0061] 在使用的过程中,用户仅需在应用程序的适当位置调用上述接口,就能让应用程序获得高效的异步I/O功能。不仅具有良好的通用性和易用性,而且可扩展性强。
[0062] 可选的,如下所示的表1为本申请实施例提供的一种应用程序接口示例(采用C语言的语法,接口函数名和参数均用于示意):
[0063] 应用程序接口 说明int PAIOM_start_async(MPI_Comm comm) 该接口为指定的MPI通信域开启一个I/O异步执行区域。其返回值为该区域的唯一标识。
PAIOM_end_async(MPI_Comm comm) 该接口为指定的MPI通信域结束一个I/O异步执行区域。
PAIOM_barrier(MPI_Comm comm) 该接口使指定的MPI通信域中的所有进程进行同步。在同步时,本系统可开展I/O请求信息分析转换等工作。
PAIOM_wait(int) 该接口会等待输入参数所指定的I/O异步执行区域中的所有异步I/O请求的完成。
[0064] 表1
[0065] 在一些实施例中,还包括:
[0066] 响应于应用文件格式的读指令或写指令,获取所述读指令或写指令对应的应用文件格式I/O请求;
[0067] 将所述应用文件格式I/O请求的当前状态标记为未响应,并保存所述应用文件格式I/O请求的第一信息。
[0068] 在一些实施例中,所述第一信息,包括以下至少一项:
[0069] 应用文件格式I/O请求对应的通信域;
[0070] 应用文件格式I/O请求的读或写标志信息;
[0071] 应用文件格式I/O请求对应的文件名和在文件中的偏移量位置;
[0072] 应用文件格式I/O请求对应变量的全局多维计算空间信息;
[0073] 应用文件格式I/O请求对应变量在当前进程内的局部计算空间信息;
[0074] 指向该应用文件格式I/O请求对应变量在当前进程内的内存数据空间的指针。
[0075] 可选的,当被应用文件格式的数据读写接口调用时,记录尚未得到响应的应用文件格式I/O请求的信息,其中包括应用程序在I/O异步执行区域内所发起的任意的应用文件
格式I/O请求的信息(将以异步方式处理),还包括应用程序在I/O异步执行区域之外所发起
的应用文件格式集合方式I/O请求信息(将以并行同步方式处理)。
[0076] 可选的,可将未响应的应用文件格式I/O请求的信息,保存为与该未响应的应用文件格式I/O请求的信息相对应的第一信息,其中,需要保存的I/O请求信息,包括:
[0077] 以异步方式,还是以同步方式进行处理;
[0078] 该I/O请求对应的通信域(不涉及到通信域的数据读写请求被标记为无通信域);
[0079] 该I/O请求是读数据还是写数据的标记;
[0080] 该I/O请求对应的文件名和在文件中的偏移量位置;
[0081] 该I/O请求对应变量的全局多维计算空间信息(包括:有几个维度、每一维的大小),同一变量在多个进程中的全局多维计算空间信息相同;
[0082] 该I/O请求对应变量在当前进程内的局部计算空间信息;
[0083] 指向该I/O请求对应变量在当前进程内的内存数据空间的指针。
[0084] 可选的,在目标通信域内,对所有尚未得到响应的所有应用文件格式I/O请求进行进程间的联合分析,建立若干基础文件格式的I/O请求信息,实现应用文件格式I/O请求到
基础文件格式I/O请求的转换,完成对应用文件格式I/O请求信息的响应。
[0085] 在一些实施例中,所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求满足预设条件,所述预设条件包括:
[0086] 应用文件格式I/O请求的当前状态为未响应;
[0087] 应用文件格式I/O请求无对应的通信域,或者应用文件格式I/O请求对应的通信域与所述目标I/O异步执行区域的通信域相同。
[0088] 在一些实施例中,所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息,包括:
[0089] 获取所述目标I/O异步执行区域的所述目标通信域内的所有进程;
[0090] 在所述所有进程的进程间进行联合分析,确定所述所有进程中各个未响应的应用文件格式I/O请求的各个变量标识;
[0091] 分别根据各个变量标识,确定各进程内所述变量标识对应的应用文件格式I/O请求集,以及,确定所述变量标识对应变量的全局计算空间信息和并行剖分的信息;
[0092] 分别根据各个变量标识对应的文件名和在文件中的偏移量位置,生成与各个应用文件格式I/O请求对应的基础文件格式的I/O请求信息。
[0093] 在一些实施例中,在所述对各个未响应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息之后,还包括:
[0094] 分别将各个未响应的应用文件格式的I/O请求的当前状态标记为已响应。
[0095] 可选的,当在一个目标通信域内对所有进程进行同步时,其首先确定需要即将响应的应用文件格式I/O请求(简称待响应请求)。各待响应请求需满足以下条件:尚未得到响
应,且无通信域、或通信域与目标通信域相同。
[0096] 随后在各进程内进行分析,基于待响应请求的变量标识,确定该进程读或写的所有变量,以及该进程内各变量读或写的局部计算空间合集(一个待响应请求对一个变量的
局部计算空间进行文件数据读写)。
[0097] 然后再联合目标通信域内的所有进程,确定目标通信域内读或写的所有变量,以及各变量全局计算空间到目标通信域内所有进程之间的分拆(可以将这种分拆称之为并行
剖分),即根据各变量的全局计算空间和该变量在各进程内的局部计算空间合集,确定该变
量在目标通信域内的并行剖分信息。
[0098] 最后依次处理目标通信域内读或写的各个变量,使用该变量的相关信息(同步执行还是异步执行的标记、通信域、读数据还是写数据的标记、对应的文件名和在文件中的偏
移量位置、全局计算空间信息、并行剖分信息、内存数据空间的指针等),建立该变量的基础
文件格式的I/O请求信息,并把相应的应用文件格式I/O请求标记为已响应。
[0099] 举例说明,如下所示的表2为本申请实施例提供的一种在含有两个进程的通信域中,各进程内尚未得到响应的变量读写相关信息的示意表格,其中“[,]”标识一个维度上的
索引范围。在表2列举的含有两个进程的通信域中,各进程读写的所有变量及相应信息。通
过联合两个进程的信息,可以确定该通信域内读或写的所有变量包括“写出A”、“写出C”和
“读入B”,并能确定读写的各变量在该通信域内的并行剖分。
[0100]
[0101] 表2
[0102] 需要说明的是,在一个进程内或不同进程间的应用文件格式的多个I/O请求,当同时满足以下所有条件时,则被认为是针对同一变量的I/O请求。根据以下条件,建立具有全
局唯一性的变量标识,即变量标识相同的多个I/O请求是读入同一变量或写出同一个变量,
而变量标识不同的两个I/O请求则分别是读和写、或是针对不同变量。其中,所有条件包括:
[0103] (1)通信域都相同,或无通信域;
[0104] (2)都是读请求,或都是写请求;
[0105] (3)对应的文件名都相同,且在文件中的偏移量位置都相同。
[0106] 进一步需要说明的是,针对同一变量的多个I/O请求的全局多维计算空间都相同,且都是以异步方式进行处理、或都是以同步方式进行处理。
[0107] 可选的,对于基础文件格式的各I/O请求信息,把它提交到基础文件格式的异步I/O系统,得到相应的基础文件格式I/O请求。
[0108] 在一些实施例中,所述方法还包括:
[0109] 响应于所述目标I/O异步执行区域的等待完成指令,获取所述目标I/O异步执行区域的所有基础I/O请求;
[0110] 向基础文件格式的异步I/O系统发送等待完成指令,以使所述基础文件格式的异步I/O系统完成所述目标I/O异步执行区域的所有基础I/O请求的响应。
[0111] 可选的,当基础文件格式I/O请求要以同步方式执行时,等待该请求执行的完成,并把所有尚未完成的异步I/O请求进行保存记录;当应用程序通过接口,发起针对一个I/O
异步执行区域内的所有异步I/O请求的等待完成命令时,针对各异步I/O请求,向基础文件
格式的异步I/O系统发起相应等待完成命令。
[0112] 在一些实施例中,所述方法还包括:
[0113] 当在任意I/O异步执行区域之外检测到集合方式的应用文件格式I/O请求时,对所述集合方式的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的
I/O请求信息;
[0114] 根据所述基础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起基础I/O请求;
[0115] 向基础文件格式的异步I/O系统发送等待完成指令,以使所述基础文件格式的异步I/O系统完成所述集合方式的应用文件格式I/O请求的响应。
[0116] 可选的,当应用程序在目标I/O异步执行区域之外提交应用文件格式的集合方式的I/O请求时,首先需要对该I/O请求进行保存与记录;然后再完成基础文件格式I/O请求信
息的建立、提交和结束等操作(即等待该基础文件格式I/O请求的完成)。
[0117] 所属领域技术人员可以理解的是,本实施例中所述的异步I/O系统,既包括只有串行I/O的异步I/O系统,也包括具有并行I/O功能的并行异步I/O系统。
[0118] 本实施例提供的异步I/O适配方法包括:当检测到目标I/O异步执行区域内的同步指令或所述目标I/O异步执行区域的结束指令时,获取所述目标I/O异步执行区域内所有未
响应的应用文件格式I/O请求,并分别对各个未响应的应用文件格式I/O请求进行进程间的
联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基础文件格式的
I/O请求信息生成对应的基础文件格式I/O请求。具有良好的通用性和易用性,实现了多种
应用文件格式I/O请求信息到基础文件格式I/O请求信息的自动转换,可扩展性强;既能面
向多种应用文件格式(比如,NetCDF/PNetCDF等),又能对接基本异步I/O系统,使得使用任
意应用文件格式的程序都能便捷和高效地获得异步I/O功能的加速效果。
[0119] 实施例二
[0120] 本实施例提供一种异步I/O适配系统,本系统实施例可以用于执行本申请方法实施例,对于本系统实施例中未披露的细节,请参照本申请方法实施例。本实施例提供的系统
包括:
[0121] 转换模块,用于响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求
进行进程间的联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基
础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。
[0122] 在一些实施例中,还包括创建模块,用于响应于创建指令,根据目标通信域创建应用文件格式I/O请求的目标I/O异步执行区域。
[0123] 在一些实施例中,在所述目标I/O异步执行区域内发起的所有应用文件格式I/O请求,均按照异步I/O请求进行处理。
[0124] 在一些实施例中,所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求满足预设条件,所述预设条件包括:
[0125] 应用文件格式I/O请求的当前状态为未响应;
[0126] 应用文件格式I/O请求无对应的通信域,或者应用文件格式I/O请求对应的通信域与所述目标I/O异步执行区域的通信域相同。
[0127] 在一些实施例中,还包括:获取模块,保存模块;其中,
[0128] 获取模块,用于响应于应用文件格式的读指令或写指令,获取所述读指令或写指令对应的应用文件格式I/O请求;
[0129] 保存模块,用于将所述应用文件格式I/O请求的当前状态标记为未响应,并保存所述应用文件格式I/O请求的第一信息。
[0130] 在一些实施例中,所述第一信息,包括以下至少一项:
[0131] 应用文件格式I/O请求对应的通信域;
[0132] 应用文件格式I/O请求的读或写标志信息;
[0133] 应用文件格式I/O请求对应的文件名和在文件中的偏移量位置;
[0134] 应用文件格式I/O请求对应变量的全局多维计算空间信息;
[0135] 应用文件格式I/O请求对应变量在当前进程内的局部计算空间信息;
[0136] 指向该应用文件格式I/O请求对应变量在当前进程内的内存数据空间的指针。
[0137] 在一些实施例中,所述转换模块包括:第一获取单元,第一确定单元,第二确定单元,第一生成单元;其中,
[0138] 第一获取单元,用于获取所述目标I/O异步执行区域的所述目标通信域内的所有进程;
[0139] 第一确定单元,用于在所述所有进程的进程间进行联合分析,确定所述所有进程中各个未响应的应用文件格式I/O请求的各个变量标识;
[0140] 第二确定单元,用于分别根据各个变量标识,确定各进程内所述变量标识对应的应用文件格式I/O请求集,以及,确定所述变量标识对应变量的全局计算空间信息和并行剖
分的信息;
[0141] 第一生成单元,用于分别根据各个变量标识对应的文件名和在文件中的偏移量位置,生成与各个应用文件格式I/O请求对应的基础文件格式的I/O请求信息。在一些实施例
中,还包括状态修改模块,用于在所述对各个未响应的应用文件格式I/O请求进行进程间的
联合分析,生成对应的基础文件格式的I/O请求信息之后,分别将各个未响应的应用文件格
式的I/O请求的当前状态标记为已响应。
[0142] 在一些实施例中,所述转换模块还包括:第二生成单元,请求发起单元,等待单元;其中,
[0143] 第二生成单元,用于当在任意I/O异步执行区域之外检测到集合方式的应用文件格式I/O请求时,对所述集合方式的应用文件格式I/O请求进行进程间的联合分析,生成对
应的基础文件格式的I/O请求信息;
[0144] 请求发起单元,用于根据所述基础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起基础I/O请求;
[0145] 等待单元,用于向基础文件格式的异步I/O系统发送等待完成指令,以使所述基础文件格式的异步I/O系统完成所述集合方式的应用文件格式I/O请求的响应。
[0146] 需要说明的是,上述各个模块/单元可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块/单元而言,上述各个
模块/单元可以位于同一处理器中;或者上述各个模块/单元还可以按照任意组合的形式分
别位于不同的处理器中。
[0147] 本实施例提供的系统包括:转换模块,用于响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区域的所有未响应的应用文件格式I/O请求,并对各个未响
应的应用文件格式I/O请求进行进程间的联合分析,生成对应的基础文件格式的I/O请求信
息;以及,分别根据各个基础文件格式的I/O请求信息,向基础文件格式的异步I/O系统发起
相应的基础I/O请求。具有良好的通用性和易用性,实现了多种应用文件格式I/O请求信息
到基础文件格式I/O请求信息的自动转换,可扩展性强;既能面向多种应用文件格式(比如,
NetCDF/PNetCDF等),又能对接基本异步I/O系统,使得使用任意应用文件格式的程序都能
便捷和高效地获得异步I/O功能的加速效果。
[0148] 实施例三
[0149] 本实施例提供另一种异步I/O适配系统,对于本系统实施例中未披露的细节,请参照本申请方法实施例。图2为本申请实施例提供的一种异步I/O适配系统的示意图,如图2所
示,本实施例提供的系统包括:
[0150] I/O异步执行区域管理模块201;应用文件格式I/O请求信息管理模块202;基础文件格式I/O请求信息管理模块203;I/O请求信息分析转换模块204;系统驱动管理模块205。
[0151] 可选的,通过I/O异步执行区域管理模块201可以使应用程序能便捷设定I/O请求以异步方式执行的区域。在一个I/O异步执行区域内,应用程序所发起的应用文件格式的数
据I/O请求,均按照异步I/O请求的方式进行处理。该I/O异步执行区域管理模块201还提供
了在I/O异步执行区域内进行进程间同步的功能,提供了等待同一区域所有异步I/O请求都
已执行完毕的功能。
[0152] 可选的,在功能实现上I/O异步执行区域管理模块201提供了开启I/O异步执行区域的接口、结束I/O异步执行区域的接口、区域内进程间同步接口、等待区域内所有异步I/O
请求完成的接口。用户仅需在应用程序的适当位置调用上述接口,就能让应用程序获得高
效的异步I/O功能。
[0153] 可选的,应用文件格式I/O请求信息管理模块202被应用文件格式的数据读写接口调用,记录尚未得到响应的应用文件格式I/O请求的信息,其中包括应用程序在I/O异步执
行区域内所发起的任意的应用文件格式I/O请求的信息(将以异步方式处理),还包括应用
程序在I/O异步执行区域之外所发起的应用文件格式集合方式I/O请求信息(将以并行同步
方式处理)。
[0154] 可选的,I/O请求信息分析转换模块204在目标通信域内,对所有尚未得到响应的所有应用文件格式I/O请求进行进程间的联合分析,建立若干基础文件格式的I/O请求信
息,实现应用文件格式I/O请求到基础文件格式I/O请求的转换,完成对应用文件格式I/O请
求信息的响应。
[0155] 可选的,应用文件格式I/O请求信息管理模块202在一个目标通信域内的所有进程进行同步时工作。联合分析可以包括以下几个步骤:
[0156] 第一步,首先确定需要即将响应的应用文件格式I/O请求(简称待响应请求),各待响应请求应满足以下条件:尚未得到响应,且无通信域、或通信域与目标通信域相同;
[0157] 第二步,应用文件格式I/O请求信息管理模块202随后在各进程内进行分析,基于待响应请求的变量标识,确定该进程读或写的所有变量,以及该进程内各变量读或写的局
部计算空间合集(一个待响应请求对一个变量的局部计算空间进行文件数据读写);
[0158] 第三步,应用文件格式I/O请求信息管理模块202然后联合目标通信域内的所有进程,确定目标通信域内读或写的所有变量,以及各变量全局计算空间到目标通信域内所有
进程之间的分拆(把这种分拆称为并行剖分),即根据各变量的全局计算空间和该变量在各
进程内的局部计算空间合集,确定该变量在目标通信域内的并行剖分;
[0159] 第四步,应用文件格式I/O请求信息管理模块202最后再依次处理目标通信域内读或写的各个变量,使用该变量的相关信息(同步执行还是异步执行的标记、通信域、读数据
还是写数据的标记、对应的文件名和在文件中的偏移量位置、全局计算空间信息、并行剖分
信息、内存数据空间的指针等),建立该变量的基础文件格式的I/O请求信息,并把相应的应
用文件格式I/O请求标记为已响应。
[0160] 可选的,对于I/O请求信息分析转换模块204所建立的基础文件格式的各I/O请求信息,通过基础文件格式I/O请求信息管理模块203把它提交到基础文件格式的异步I/O系
统,得到相应的基础文件格式I/O请求。
[0161] 当该基础文件格式I/O请求要以同步方式执行时,基础文件格式I/O请求信息管理模块203等待该请求执行的完成,基础文件格式I/O请求信息管理模块203把所有尚未完成
的异步I/O请求保存记录;当应用程序通过接口,发起针对一个I/O异步执行区域内的所有
异步I/O请求的等待完成命令时,基础文件格式I/O请求信息管理模块203针对各异步I/O请
求,向基础文件格式的异步I/O系统发起相应等待完成命令。等所有异步I/O请求均已完成
时,基础文件格式I/O请求信息管理模块203结束此次操作。
[0162] 可选的,系统驱动管理模块205驱动本系统其他模块,实现应用程序和应用文件格式对本系统及基本异步I/O系统的使用。在应用程序开启一个I/O异步执行区域时,系统驱
动管理模块205确认本系统是否已被启动,未启动时则启动本系统,然后开启新的I/O异步
执行区域。当应用程序在I/O异步执行区域内提交应用文件格式的一个I/O请求时,系统驱
动管理模块205调用应用文件格式I/O请求信息管理模块202,对该I/O请求进行记录。
[0163] 可选的,当应用程序在I/O异步执行区域内提交应用文件格式的I/O请求是集合操作时,或应用程序结束一个I/O异步执行区域时,系统驱动管理模块205先后调用I/O请求信
息分析转换模块204和基础文件格式I/O请求信息管理模块203,完成基础文件格式I/O请求
信息的建立和提交,使应用文件格式的I/O请求得到响应。当应用程序调用等待异步I/O请
求完成的接口,系统驱动管理模块205调用基础文件格式I/O请求信息管理模块203,完成对
相应I/O异步执行区域的所有异步I/O请求的等待。
[0164] 可选的,当应用程序在I/O异步执行区域之外提交应用文件格式的集合方式的I/O请求时,系统驱动管理模块205首先调用应用文件格式I/O请求信息管理模块202,对该I/O
请求进行记录;然后调用I/O请求信息分析转换模块204和基础文件格式I/O请求信息管理
模块203,完成基础文件格式I/O请求信息的建立、提交和结束(即等待该基础文件格式I/O
请求的完成)。
[0165] 需要说明的是,在一个进程内或不同进程间的应用文件格式的多个I/O请求,当同时满足以下所有条件时,则被认为是针对同一变量的I/O请求。根据以下条件,建立具有全
局唯一性的变量标识,即变量标识相同的多个I/O请求是读入同一变量或写出同一个变量,
而变量标识不同的两个I/O请求则分别是读和写、或是针对不同变量。其中,所有条件包括:
[0166] (1)通信域都相同,或无通信域;
[0167] (2)都是读请求,或都是写请求;
[0168] (3)对应的文件名都相同,且在文件中的偏移量位置都相同。
[0169] 进一步需要说明的是,针对同一变量的多个I/O请求的全局多维计算空间都相同,且都是以异步方式进行处理、或都是以同步方式进行处理。
[0170] 所属领域技术人员可以理解,图2中示出的结构并不构成对本申请实施例系统的限定,可以包括比图示更多或更少的模块/单元,或者组合某些模块/单元,或者不同的模
块/单元布置。
[0171] 本实施例所公开的异步I/O适配系统具有良好的通用性和易用性,实现了多种应用文件格式I/O请求信息到基础文件格式I/O请求信息的自动转换,可扩展性强;既能面向
多种应用文件格式(比如,NetCDF/PNetCDF等),又能对接基本异步I/O系统,使得使用任意
应用文件格式的程序都能便捷和高效地获得异步I/O功能的加速效果。
[0172] 实施例四
[0173] 本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时可以实现如前述方法实施例中的方法步骤,本实施
例在此不再重复赘述。
[0174] 其中,计算机可读存储介质还可单独包括计算机程序、数据文件、数据结构等,或者包括其组合。计算机可读存储介质或计算机程序可被计算机软件领域的技术人员具体设
计和理解,或计算机可读存储介质对计算机软件领域的技术人员而言可以是公知和可用
的。计算机可读存储介质的示例包括:磁性介质,例如硬盘、软盘和磁带;光学介质,例如,
CDROM盘和DVD;磁光介质,例如,光盘;和硬件装置,具体被配置以存储和执行计算机程序,
例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存;或服务器、app应用商城等。计算机程
序的示例包括机器代码(例如,由编译器产生的代码)和包含高级代码的文件,可由计算机
通过使用解释器来执行高级代码。所描述的硬件装置可被配置为用作一个或多个软件模
块,以执行以上描述的操作和方法,反之亦然。另外,计算机可读存储介质可分布在联网的
计算机系统中,可以分散的方式存储和执行程序代码或计算机程序。
[0175] 实施例五
[0176] 图3为本申请实施例提供的一种电子设备的连接框图,如图3所示,该电子设备300可以包括:一个或多个处理器301,存储器302,多媒体组件303,输入/输出(I/O)接口304,以
及通信组件305。
[0177] 其中,一个或多个处理器301用于执行如前述方法实施例中的全部或部分步骤。存储器302用于存储各种类型的数据,这些数据例如可以包括电子设备中的任何应用程序或
方法的指令,以及应用程序相关的数据。
[0178] 一个或多个处理器301可以是专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处
理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable 
Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称
FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行如前述方法实施例中的
方法。
[0179] 存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只
读存储器(Electrically Erasable Programmable Read‑Only Memory,简称EEPROM),可擦
除可编程只读存储器(Erasable Programmable Read‑Only Memory,简称EPROM),可编程只
读存储器(Programmable Read‑Only Memory,简称PROM),只读存储器(Read‑Only Memory,
简称ROM),磁存储器,快闪存储器,磁盘或光盘。
[0180] 多媒体组件303可以包括屏幕和音频组件,该屏幕可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信
号。所接收的音频信号可以被进一步存储在存储器或通过通信组件发送。音频组件还包括
至少一个扬声器,用于输出音频信号。
[0181] I/O接口304为一个或多个处理器301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。
[0182] 通信组件305用于该电子设备300与其他设备之间进行有线或无线通信。有线通信包括通过网口、串口等进行通信;无线通信包括:Wi‑Fi、蓝牙、近场通信(Near Field 
Communication,简称NFC)、2G、3G、4G、5G,或它们中的一种或几种的组合。因此相应的该通
信组件305可以包括:Wi‑Fi模块,蓝牙模块,NFC模块。
[0183] 综上,本申请提供了一种异步I/O适配方法、系统、计算机可读存储介质以及电子设备,该方法包括:响应于目标I/O异步执行区域的结束指令,获取所述目标I/O异步执行区
域的所有未响应的应用文件格式I/O请求,并对各个未响应的应用文件格式I/O请求进行进
程间的联合分析,生成对应的基础文件格式的I/O请求信息;以及,分别根据各个基础文件
格式的I/O请求信息,向基础文件格式的异步I/O系统发起相应的基础I/O请求。具有良好的
通用性和易用性,实现了多种应用文件格式I/O请求信息到基础文件格式I/O请求信息的自
动转换,可扩展性强;既能面向多种应用文件格式(比如,NetCDF/PNetCDF等),又能对接基
本异步I/O系统,使得使用任意应用文件格式的程序都能便捷和高效地获得异步I/O功能的
加速效果。
[0184] 另外应该理解到,在本申请所提供的实施例中所揭露的方法或系统,也可以通过其它的方式实现。以上所描述的方法或系统实施例仅仅是示意性的,例如,附图中的流程图
和框图显示了根据本申请的多个实施例的方法和装置的可能实现的体系架构、功能和操
作。在这点上,流程图或框图中的每个方框可以代表一个模块、计算机程序段或计算机程序
的一部分,模块、计算机程序段或计算机程序的一部分包含一个或多个用于实现规定的逻
辑功能的计算机程序。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也
可以以不同于附图中所标注的顺序发生,实际上也可以基本并行地执行,它们有时也可以
按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方
框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬
件的系统来实现,或者可以用专用硬件与计算机程序的组合来实现。
[0185] 在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有
明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没
有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方
法、装置或者设备中还存在另外的相同要素;如果有描述到“第一”、“第二”等仅用于描述目
的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含
指明所指示的技术特征的先后关系;在本申请的描述中,除非另有说明,术语“多个”、“多”
的含义是指至少两个;如果有描述到服务器,需要说明的是,服务器可以是独立的物理服务
器或终端,也可以是多个物理服务器构成的服务器集群,可以是能够提供云服务器、云数据
库、云存储和CDN等基础云计算服务的云服务器;在本申请中如果有描述到智能终端或移动
设备,需要说明的是,智能终端或移动设备可以是手机、平板电脑、智能手表、上网本、可穿
戴电子设备、个人数字助理(Personal Digital Assistant,PDA)、增强现实技术设备
(Augmented Reality,AR)、虚拟现实设备(Virtual Reality,VR)、智能电视、智能音响、个
人计算机(Personal Computer,PC)等,但并不局限于此,本申请对智能终端或移动设备的
具体形式不做特殊限定。
[0186] 最后需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“一个示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特
征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述
术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料
或者特点可以在任何的一个或多个实施例或示例中以合适的方式进行结合。
[0187] 尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例都是示例性的,所述的内容只是为了便于理解本申请而采用的实施方式,并非用以限定本申请。任
何本申请所属技术领域内的技术人员,在不脱离本申请所公开的精神和范围的前提下,可
以在实施的形式上及细节上作任何的修改与变化,但本申请的保护范围,仍须以所附的权
利要求书所界定的范围为准。