CN114138381A - 一种数值程序的处理系统 - Google Patents
一种数值程序的处理系统 Download PDFInfo
- Publication number
- CN114138381A CN114138381A CN202210113262.3A CN202210113262A CN114138381A CN 114138381 A CN114138381 A CN 114138381A CN 202210113262 A CN202210113262 A CN 202210113262A CN 114138381 A CN114138381 A CN 114138381A
- Authority
- CN
- China
- Prior art keywords
- write
- read
- parallel
- request information
- parallel read
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本申请提供的一种数值程序的处理系统,用于完成分布式计算的多维变量的同步/异步并行读入/写出,包括:并行读/写流程控制模块、并行读/写模块、应用程序接口模块及计算节点并行读/写信息管理模块,所述数值程序并行运行在计算机的一组计算节点提供的多个进程上,所述应用程序接口用于接收数值程序的请求信息,在所述请求信息为同步/异步写出请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步写出请求信息记录到读/写请求池;所述并行读/写模块对应的并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步写出请求信息,并完成尚未响应的同步/异步写出请求信息对应的多维变量的数据到文件的并行写出。
Description
技术领域
本申请涉及数值程序的处理领域,特别地涉及数值程序的一种处理系统。
背景技术
模拟仿真的数值计算程序,在模拟仿真过程中,会不断将多维变量的中间计算结果输出到文件,也会从文件读入多维变量,即数值程序有输入和输出(I/O)数据的需求。数值程序往往需要一批次读入/写出多个变量(即在读完/写完多个变量后才能进行计算),但是相关技术中,采用I/O系统进行数值程序的处理时,只有读完/写完上一个变量后才能启动下一个变量的读入/写出过程,无法真正实现I/O过程与计算过程重叠。
发明内容
针对上述问题,本申请提供一种数值程序的处理系统。
本申请提供了一种数值程序的处理系统,用于完成分布式计算的多维变量的同步/异步并行读入/写出,包括:并行读/写流程控制模块、并行读/写模块、应用程序接口模块及计算节点并行读/写信息管理模块,所述数值程序并行运行在计算机的一组计算节点提供的多个进程上,所述应用程序接口用于接收数值程序的请求信息,在所述请求信息为同步/异步写出请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步写出请求信息记录到读/写请求池;所述并行读/写模块对应的并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步写出请求信息,并完成尚未响应的同步/异步写出请求信息对应的多维变量的数据到文件的并行写出。
在一些实施例中,所述并行读/写流程控制模块还使用进程间通信,将同一计算节点上所有进程的所述同步/异步写出请求信息对应多维变量的数据汇集到所述并行读/写专用线程所属的进程,并在所述并行读/写专用线程所属的进程上把所述汇集到的数据进行缓存;所述并行读/写专用线程在写出数据前,使用进程间通信,将缓存中的所述同步/异步写出请求信息对应的数据在所述一组计算节点之间进行重新排列分布,得到即将并行写出的数据,其中,所述重新排列分布后的数据在同一计算节点内和计算节点之间以各数据在文件中的存放位置为关键字升序排列。
在一些实施例中,在所述请求信息为同步/异步读入请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步读入请求信息记录到所述读/写请求池;所述并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步读入请求信息,并完成尚未响应的同步/异步读入请求信息对应的多维变量的数据从文件的并行读入;所述并行读/写专用线程使用进程间通信,将已读入的多维变量的数据在一组计算节点之间进行重新排列分布,使各所述并行读/写专用线程的所属进程获取到该进程所需的部分数据。
在一些实施例中,所述并行读/写流程控制模块还用于在各计算节点上选出一个进程,并在该进程上启动所述并行读/写专用线程,以运行所述并行读/写模块。
在一些实施例中,在所述请求信息为初始化系统请求的情况下,所述并行读/写流程控制模块用于控制各个模块进行初始化。
在一些实施例中,在所述请求信息为结束请求的情况下,所述并行读/写流程控制模块用于控制各个模块及并行读/写专用线程结束运行,并控制各个模块释放各个模块的内存空间。
在一些实施例中,在所述请求信息为注册全局多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述全局多维计算空间;
在所述请求信息为注册当前进程的局部多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述局部多维计算空间,并记录所述局部多维计算空间与所述全局多维计算空间的对应关系;
在所述请求信息为注册并行分解请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录并行分解,并记录所述并行分解与所述全局多维计算空间、当前进程内若干所述局部多维计算空间的对应关系。
在一些实施例中,所述读/写请求池中记录各请求信息包含相应多维变量与一个所述并行分解的对应关系;所述并行读/写专用线程用于根据所述并行分解,确定多维变量中在各进程中的各数据对应于文件中的存放位置的关键字;所述并行读/写专用线程根据所述并行分解,完成已读入数据在所述一组计算节点之间的重新排列分布,完成要写出数据在所述一组计算节点之间的重新排列分布;所述并行读/写流程控制模块根据所述并行分解,完成已读入的数据在同一计算节点内各个进程间的散发,使各进程获得相应多维变量在该进程上若干所述局部多维计算空间上的数据。
在一些实施例中,所述数值程序的处理系统还包括:自适应性能优化模块,所述自适应性能优化模块用于唤醒和休眠所述并行读/写专用线程。
在一些实施例中,所述自适应性能优化模块还用于建立所述读/写请求池中读/写请求的优先级,其中,同步读/写请求的优先级高于异步读/写请求;优先级高的读/写请求被所述并行读/写专用线程先获取到。
在一些实施例中,当所述应用程序接口接收到的所述请求信息是同步读入请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程;当所述应用程序接口接收到的所述请求信息是关于异步读入的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程。
在一些实施例中,当所述应用程序接口接收到的所述请求信息是同步写出请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步写出请求信息对应变量到文件的并行写出;当所述应用程序接口接收到的所述请求信息是关于异步写出的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步写出请求信息对应变量到文件的并行写出。
本申请提供的一种数值程序的处理系统,用于完成分布式计算的多维变量的同步/异步并行读入/写出,通过应用程序接口接收数值程序的请求信息,在所述请求信息为同步写出请求信息的情况下,在所述请求信息为同步/异步写出请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步写出请求信息记录到读/写请求池,然后并行读/写模块对应的并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步写出请求信息,并完成尚未响应的同步/异步写出请求信息对应的多维变量的数据到文件的并行写出,能够实现写出数据和计算过程的重叠,提升数值程序的并行写出效率。
附图说明
在下文中将基于实施例并参考附图来对本申请进行更详细的描述。
图1为本申请实施例提供的一种数值程序的处理系统的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一\第二\第三”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在介绍本申请实施例之前,对相关技术进行简单的介绍,模拟仿真的数值计算程序需要对被模拟仿真的对象进行建模,通常将对象的信息表达为一定维度(一维、二维、三维、四维、甚至更多维)计算空间上的若干变量,然后对多维变量进行计算。在精细化模拟仿真的要求下,数值程序计算量很大,需要利用MPI(消息传递接口)等为数值程序开发多进程协同计算的并行程序,以利用并行计算机来加速计算,其中数值程序的多维计算空间会被分拆为若干子空间,每个进程负责不同子空间对应的数值计算,进程间基于MPI交换所需的数据。在一个计算子空间内,各维度上的索引是连续不间断的序列,可表示为[N,M],即N到M的所有整数。把完整的多维计算空间分拆到不同进程上,称为并行分解。
表1为相关技术中的并行分解的示意表,如表1所示,三维计算空间{[1,16],[1,32],[1,24]}被分拆给8个进程以进行并行计算。其中“[1,16]”表示一个维度,1和16分别表示该维度的起始索引和结束索引。
表1为相关技术中的并行分解的示意表
进程号 | 计算子空间 |
0 | {[1,8],[1,16],[1,12]} |
1 | {[1,8],[17,32],[1,12]} |
2 | {[9,16],[1,16],[1,12]} |
3 | {[9,16],[17,32],[1,12]} |
4 | {[1,8],[1,16],[13,24]} |
5 | {[1,8],[17,32],[13,24]} |
6 | {[9,16],[1,16],[13,24]} |
7 | {[9,16],[17,32],[13,24]} |
在模拟仿真过程中,数值程序会不断将多维变量的中间计算结果输出到文件,也会从文件读入多维变量,即数值程序有输入和输出(I/O)数据的需求。科技的发展要求模拟仿真精度不断提升,变量的大小不断增加、数值程序的I/O数据量急剧增大,I/O不断成为数值程序并行计算的性能瓶颈。对此,MPI提供了对文件并行读/写的支持(即MPI-IO),使得数值程序的多个进程能各自读/写文件的不同片段,以利用高性能计算机的并行存储来加速针对大文件的I/O过程。MPI-IO提供了各进程独立读/写文件的功能(相应MPI程序接口包括MPI_File_read、MPI_File_write、MPI_File_read_at和MPI_File_write_at等),但各进程独立读/写的方式容易造成对并行存储的碎片化访问,降低并行I/O的效率。为此,MPI-IO提供了通信域内所有进程协同并行读/写文件的功能(相应MPI程序接口包括MPI_File_read_all、MPI_File_write_all、MPI_File_read_at_all和MPI_File_write_at_all等),在写出文件前或从文件读入数据后,对数据在进程间进行重分布。为了进一步降低I/O开销对数值程序并行性能的影响,MPI-IO提供了异步I/O功能,以使I/O过程与计算过程重叠起来(相应MPI程序接口包括MPI_File_read_all_begin、MPI_File_read_all_end、MPI_File_write_all_begin、MPI_File_write_all_end等)。
尽管进程协同并行读/写文件的方式比进程独立读/写方式更为高效,但MPI-IO以及基于它发展的并行I/O框架和并行文件格式(如ADIOS、ROMIO、PnetCDF等),均存在以下局限性:MPI的文件并行读/写接口只支持对一维变量的读/写,不直接支持多维变量;而对于ADIOS、PnetCDF等,进程协同并行读/写方式要求并行分解满足一个条件:各进程只能有一个计算子空间。有些数值程序为了改善并行计算的负载平衡性,要求一个进程负责多个计算子空间,例如地球系统模式领域的陆面分量模式。数值程序往往需要一批次读入/写出多个变量(即在读完/写完多个变量后才能进行计算),使得MPI-IO所提供的异步I/O功能无法真正实现I/O过程与计算过程重叠,因为只有读完/写完上一个变量后才能启动下一个变量的读入/写出过程。
基于相关技术中存在的问题,本申请实施例提供一种数值程序的处理系统,
图1为本申请实施例提供的一种信息调整方法的实现流程示意图,如图1所示,所述数值程序的处理系统,在具有并行存储和多个计算节点的高性能计算机上运行,为并行计算多维空间的数值程序提供服务,支持各进程负责任意数量局部计算空间情况下的进程协同并行写出,支持一批次读入/写出多个变量情况下读/写过程与计算过程的重叠,以使数值程序能便捷使用并行存储,尽可能获得性能提升,且额外资源用量低。
本申请实施例中,所述数值程序的处理系统,用于完成分布式计算的多维变量的同步/异步并行读入/写出,包括:并行读/写流程控制模块、并行读/写模块、应用程序接口模块及计算节点并行读/写信息管理模块,其中,所述应用程序接口用于接收数值程序的请求信息,所述请求信息包括以下之一:同步写出请求信息、同步读入请求信息、异步写出请求信息、异步读入请求信息、初始化系统请求、结束请求、注册多维计算空间请求、注册并行分解请求等。
本申请实施例中,所述应用程序接口模块提供多个应用程序接口,在数值程序调用对应的接口时,即应用程序接口模块接收到对应的请求信息。例如,调用同步写出接口,则接收到同步写出请求。该多个应用程序接口能够使得数值程序能向本系统(即数值程序的处理系统)注册其全局多维计算空间,注册各进程负责的若干局部计算空间,注册全局计算空间在所有进程间的并行分解,启动对各变量的同步模式协同并行写出,启动对各变量的同步模式协同并行读入,启动对各变量的异步模式协同并行写出,启动对各变量的异步模式协同并行读入,等待一组异步读入/写出操作的完成。此外,还有初始化和结束并行异步数据输入输出系统的应用程序接口。
在数值程序调用对应的接口时,即应用程序接口模块接收到对应的请求信息。例如,调用同步写出接口,则接收到同步写出请求。
示例性地,表2为本申请实施例提供的一种应用程序接口模块中接口的示意表,如表2所示,
表2为本申请实施例提供的一种应用程序接口模块中接口的示意表
应用程序接口 | 说明 |
PAIO_define_global_space(size_tndims,size_t*dim_size,MPI_Commcomm,PAID_space&global_space) | 该接口定义一个全局的计算空间(通过参数global_space返回),维度数量和每个维度的大小由ndims和dim_size分别指定。该接口要求通信域comm的所有进程同时调用且参数相同。 |
PAIO_define_local_space(size_t*starts,size_t*counts,PAID_spaceglobal_space,PAID_space&local_space) | 该接口定义一个对应于全局计算空间global_space的局部计算空间(通过local_space返回)。局部计算空间每一个维度在全局计算空间中的开始位置和大小由starts和counts分别指定。 |
PAIO_define_space_decompostion(size_tnum_local_spaces,PAID_space*local_spaces,PAID_decomp&space_decomp) | 该接口定义全局计算空间的一个并行分解(通过参数space_decomp返回)。每个进程上负责的若干局部计算空间由num_local_spaces和local_spaces指定。该接口要求对应通信域的所有进程同时调用。 |
PAIO_file_read_all(File_info*file,PAID_decompspace_decomp,void**data_ptrs) | 该接口启动一个变量的同步协同并行读入,该变量在相应文件中的存放位置信息等由file指定。该变量的计算空间并行分解由space_decomp指定,各进程所负责的若干局部计算空间对应的该变量的若干数组起始位置由data_ptrs指定。该接口要求对应通信域的所有进程同时调用。该接口在完成数据读入后返回。 |
PAIO_file_write_all(File_info*file,PAID_decompspace_decomp,void**data_ptrs) | 该接口与PAIO_file_read_all接口类似,但是针对的是写出数据到文件。 |
PAIO_file_iread_all(File_info*file,PAID_decompspace_decomp,void**data_ptrs,PAIO_request&request) | 该接口与PAIO_file_read_all接口类似,但启动的是同步协同并行读入。通过参数request返回异步读入请求。 |
PAIO_file_iwrite_all(File_info*file,PAID_decompspace_decomp,void**data_ptrs,PAIO_request&request) | 该接口与PAIO_file_iread_all接口类似,但是针对的是写出数据到文件。 |
PAIO_wait_all(size_tnum_requests,PAIO_request*requests) | 该接口等待一组异步文件读/写操作的完成。 |
本申请实施例中,在请求信息为同步/异步写出请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步写出请求信息记录到读/写请求池;所述并行读/写模块对应的并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步写出请求信息,并完成尚未响应的同步/异步写出请求信息对应的多维变量的数据到文件的并行写出。
本申请实施例中,并行读/写模块在各个计算节点上运行,且在一个计算节点内,通常只由一个进程的一个线程运行该模块,且该线程只负责并行读/写相关任务,不参与数值程序的计算任务,以实现异步并行读/写,并尽量减少额外开销。本申请实施例中,该线程称为并行读/写专用线程。
本申请实施例中,当所述应用程序接口接收到的所述请求信息是同步写出请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步写出请求信息对应变量到文件的并行写出;当所述应用程序接口接收到的所述请求信息是关于异步写出的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步写出请求信息对应变量到文件的并行写出。
本申请实施例中,所述并行读/写流程控制模块还使用进程间通信,将同一计算节点上所有进程的所述同步/异步写出请求信息对应多维变量的数据汇集到所述并行读/写专用线程所属的进程,并在所述并行读/写专用线程所属的进程上把所述汇集到的数据进行缓存;所述并行读/写专用线程在写出数据前,使用进程间通信,将缓存中的所述同步/异步写出请求信息对应的数据在所述一组计算节点之间进行重新排列分布,得到即将并行写出的数据,其中,所述重新排列分布后的数据在同一计算节点内和计算节点之间以各数据在文件中的存放位置为关键字升序排列。
本申请实施例中,得到目标数据后,然后利用MPI-IO的功能,把重排列分布后的目标数据并行写出到文件的相应位置。重排列分布后的数据满足条件:以各数据对应于文件中的存放位置为关键字,所有数据在这一组计算节点中按照关键字的升序排列,即任意计算节点内的所有数据的关键字序列是升序,且第i个计算节点的所有数据的关键字都小于第i+1个计算节点的所有数据的关键字。
在一些实施例中,在所述请求信息为同步/异步读入请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步读入请求信息记录到所述读/写请求池;所述并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步读入请求信息,并完成尚未响应的同步/异步读入请求信息对应的多维变量的数据从文件的并行读入;所述并行读/写专用线程使用进程间通信,将已读入的多维变量的数据在一组计算节点之间进行重新。
本申请实施例中,利用计算节点并行读/写信息管理模块所汇集到的局部计算空间信息,并行读/写专用线程使用进程间通信,使各计算节点获得局部计算空间信息对应的数据。
在一些实施例中,在所述请求信息为同步/异步读入请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步读入请求信息记录到所述读/写请求池;所述并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步读入请求信息,并完成尚未响应的同步/异步读入请求信息对应的多维变量的数据从文件的并行读入;所述并行读/写专用线程使用进程间通信,将已读入的多维变量的数据在一组计算节点之间进行重新排列分布,使各所述并行读/写专用线程的所属进程获取到该进程所需的部分数据。
本申请实施例中,当所述应用程序接口接收到的所述请求信息是同步读入请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程;当所述应用程序接口接收到的所述请求信息是关于异步读入的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程。
在一些实施例中,所述并行读/写流程控制模块还用于在各计算节点上选出一个进程,并在该进程上启动所述并行读/写专用线程,以运行所述并行读/写模块。
在一些实施例中,在所述请求信息为初始化系统请求的情况下,所述并行读/写流程控制模块用于控制各个模块进行初始化。
在一些实施例中,在所述请求信息为结束请求的情况下,所述并行读/写流程控制模块用于控制各个模块结束运行,并控制各个模块释放各个模块的内存空间。
在一些实施例中,在所述请求信息为注册多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述全局多维计算空间,在所述请求信息为注册当前进程的局部多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述局部多维计算空间,并记录所述局部多维计算空间与所述全局多维计算空间的对应关系。
在所述请求信息为注册并行分解请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录并行分解,并记录所述并行分解与所述全局多维计算空间、当前进程内若干所述局部多维计算空间的对应关系。
在一些实施例中,所述读/写请求池中记录各请求信息包含相应多维变量与一个所述并行分解的对应关系;所述并行读/写专用线程用于根据所述并行分解,确定多维变量中在各进程中的各数据对应于文件中的存放位置的关键字;所述并行读/写专用线程根据所述并行分解,完成已读入数据在所述一组计算节点之间的重新排列分布,完成要写出数据在所述一组计算节点之间的重新排列分布;所述并行读/写流程控制模块根据所述并行分解,完成已读入的数据在同一计算节点内各个进程间的散发,使各进程获得相应多维变量在该进程上若干所述局部多维计算空间上的数据。
在一些实施例中,所述数值程序的处理系统还包括:自适应性能优化模块,所述自适应性能优化模块用于唤醒和休眠所述并行读/写专用线程。
本申请实施例中,通过唤醒和休眠所述并行读/写专用线程,以使读/写专用线程尽量少地占用处理器资源。当读/写专用线程处于休眠状态、数值程序发起新的读/写操作,读/写专用线程会被唤醒。如果当前本系统完成了所有读/写操作、没有还未被响应的读/写请求时,读/写专用线程进入休眠状态。对于异步读/写请求,并行读/写模块会使用MPI-IO的异步读/写功能来完成并行读/写,期间读/写专用线程通过进入休眠状态来确保不占用处理器资源。
本申请实施例中,所述自适应性能优化模块还用于建立所述读/写请求池中读/写请求的优先级,其中,读请求的优先级高于写请求,同步读/写请求的优先级高于异步读/写请求;优先级高的读/写请求被所述并行读/写专用线程先获取到,会被先响应、先完成。
基于前述的各个实施例,对各个模块的功能进行分别介绍,
计算节点并行读/写信息管理模块的功能如下:
当数值程序注册全局多维计算空间、注册各进程负责的若干局部计算空间、注册全局计算空间在所有进程间的并行分解时,该模块记录相应信息。在数值程序注册全局计算空间的并行分解时,该模块把在同一计算节点上运行的所有进程的局部计算空间信息汇集到一起。在数值程序写出一个变量时,该模块首先记录该变量的写出请求信息,然后使用进程间通信,把在同一计算节点上运行的所有进程要写出的数据汇集到一起,缓存起来;在成功写出该变量后,后释放缓存。在数值程序读入一个变量时,该模块首先记录该变量的读入请求信息,然后在该变量被读入后,根据同一计算节点上运行的各进程的局部计算空间,使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程。
并行读/写模块的功能如下:
用于在各个计算节点上运行,且在一个计算节点内,通常只由一个进程的一个线程运行该模块,且该线程只负责并行读/写相关任务,不参与数值程序的计算任务,以实现异步并行读/写,并尽量减少额外开销。该线程称为并行读/写专用线程。该模块从计算节点并行读/写信息管理模块获取尚未得到响应的读/写请求(读/写请求)。对于写出一个变量的请求,该模块利用计算节点并行读/写信息管理模块所汇集到的局部计算空间信息,使用进程间通信,把所缓存的该变量的数据在一组计算节点之间进行重新排列分布,然后利用MPI-IO的功能,把重排列分布后的数据并行写出到文件的相应位置。重排列分布后的数据满足条件:以各数据对应于文件中的存放位置为关键字,所有数据在这一组计算节点中按照关键字的升序排列,即任意计算节点内的所有数据的关键字序列是升序,且第i个计算节点的所有数据的关键字都小于第i+1个计算节点的所有数据的关键字。
对于读入一个变量的请求,一组计算节点利用MPI-IO的功能,从文件并行读入所需数据,读入后的数据在这一组计算节点的分布满足在写出变量时数据重排列分布的条件。然后,利用计算节点并行读/写信息管理模块所汇集到的局部计算空间信息,使用进程间通信,使各计算节点获得局部计算空间信息对应的数据。变量读入过程是变量写出过程的逆过程。
并行读/写流程控制模块的功能如下:
该模块在数值程序调用本系统的各应用程序接口时,执行相应流程。
当数值程序调用初始化本系统的接口时,该模块完成本系统及各模块的初始化。
当数值程序调用结束本系统的接口时,该模块完成本系统及各模块的结束和内存释放。
当数值程序调用注册全局多维计算空间的接口时,该模块调用计算节点并行读/写信息管理模块,以记录该全局多维计算空间。
当数值程序调用注册局部计算空间的接口时,该模块调用计算节点并行读/写信息管理模块,以记录该局部计算空间。
当数值程序调用注册并行分解的接口时,该模块调用计算节点并行读/写信息管理模块,以记录该并行分解。在一个进程上,并行分解就是若干局部计算空间的合集。
当数值程序调用启动同步/异步模式协同并行写出的接口时,该模块首先确认各计算节点上的并行读/写专用线程是否已被启动,如尚未启动,则启动并行读/写专用线程并运行它。然后,该模块使用计算节点并行读/写信息管理模块,记录相应写出请求信息,并在同一计算节点上把要写出的数据汇集到读/写专用线程所属的进程。当数值程序调用的是同步写出方式时,该模块持续等待读/写专用线程完成相应变量的写出。
当数值程序调用启动同步/异步模式协同并行读入的接口时,该模块首先确认各计算节点上的并行读/写专用线程是否已被启动,如尚未启动,则启动并行读/写专用线程并运行它。然后,该模块使用计算节点并行读/写信息管理模块,记录相应读入请求信息。当数值程序调用的是同步读入方式时,该模块持续等待读/写专用线程完成相应变量的读入。
该模块控制并行读/写专用线程完成异步并行读/写。读/写专用线程每次从计算节点并行读/写信息管理模块获取到一个尚未得到响应的读/写请求。对于写请求读/写专用线程使用并行读/写模块来完成该请求的并行写。对于读请求,读/写专用线程使用并行读/写模块,使读/写专用线程获取到其对应计算节点的所有进程要读入的数据。
当数值程序调用等待一组异步读入/写出操作的接口时,该进程确认各个读入/写出操作是否都已完成,在有未完成的操作时进行等待、直至完成。其中,对于一个读请求,该模块调用计算节点并行读/写信息管理模块,以把读/写专用线程已获取到相应数据散发给同一计算节点上的各个进程。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台控制器执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数值程序的处理系统,其特征在于,用于完成分布式计算的多维变量的同步/异步并行读入/写出,包括:并行读/写流程控制模块、并行读/写模块、应用程序接口模块及计算节点并行读/写信息管理模块,所述数值程序并行运行在计算机的一组计算节点提供的多个进程上,所述应用程序接口用于接收数值程序的请求信息,在所述请求信息为同步/异步写出请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步写出请求信息记录到读/写请求池;所述并行读/写模块对应的并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步写出请求信息,并完成尚未响应的同步/异步写出请求信息对应的多维变量的数据到文件的并行写出。
2.根据权利要求1所述的数值程序的处理系统,其特征在于,所述并行读/写流程控制模块还使用进程间通信,将同一计算节点上所有进程的所述同步/异步写出请求信息对应多维变量的数据汇集到所述并行读/写专用线程所属的进程,并在所述并行读/写专用线程所属的进程上把所述汇集到的数据进行缓存;所述并行读/写专用线程在写出数据前,使用进程间通信,将缓存中的所述同步/异步写出请求信息对应的数据在所述一组计算节点之间进行重新排列分布,得到即将并行写出的数据,其中,所述重新排列分布后的数据在同一计算节点内和计算节点之间以各数据在文件中的存放位置为关键字升序排列。
3.根据权利要求1所述的数值程序的处理系统,其特征在于,当所述应用程序接口接收到的所述请求信息是同步写出请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步写出请求信息对应变量到文件的并行写出;当所述应用程序接口接收到的所述请求信息是关于异步写出的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步写出请求信息对应变量到文件的并行写出。
4.根据权利要求1所述的数值程序的处理系统,其特征在于,在所述请求信息为同步/异步读入请求信息的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块,把所述同步/异步读入请求信息记录到所述读/写请求池;所述并行读/写专用线程从所述读/写请求池获取到尚未响应的同步/异步读入请求信息,并完成尚未响应的同步/异步读入请求信息对应的多维变量的数据从文件的并行读入;所述并行读/写专用线程使用进程间通信,将已读入的多维变量的数据在一组计算节点之间进行重新排列分布,使各所述并行读/写专用线程的所属进程获取到该进程所需的部分数据。
5.根据权利要求4所述的数值程序的处理系统,其特征在于,当所述应用程序接口接收到的所述请求信息是同步读入请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该同步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程;当所述应用程序接口接收到的所述请求信息是关于异步读入的等待请求信息时,所述并行读/写流程控制模块持续等待所述并行读/写专用线程完成该等待请求信息对应的异步读入请求信息对应变量从文件的并行读入,然后控制所述并行读/写专用线程所属的进程使用进程间通信,把已读入的数据散发给同一计算节点内的各个进程。
6.根据权利要求1或4任一项所述的数值程序的处理系统,所述并行读/写流程控制模块还用于在各计算节点上选出一个进程,并在该进程上启动所述并行读/写专用线程,以运行所述并行读/写模块。
7.根据权利要求1所述的数值程序的处理系统,其特征在于,在所述请求信息为初始化系统请求的情况下,所述并行读/写流程控制模块用于控制各个模块进行初始化。
8.根据权利要求1所述的数值程序的处理系统,其特征在于,在所述请求信息为结束请求的情况下,所述并行读/写流程控制模块用于控制各个模块及并行读/写专用线程结束运行,并控制各个模块释放各个模块的内存空间。
9.根据权利要求1所述的数值程序的处理系统,其特征在于,在所述请求信息为注册全局多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述全局多维计算空间;
在所述请求信息为注册当前进程的局部多维计算空间请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录所述局部多维计算空间,并记录所述局部多维计算空间与所述全局多维计算空间的对应关系;
在所述请求信息为注册并行分解请求的情况下,所述并行读/写流程控制模块调用所述计算节点并行读/写信息管理模块记录并行分解,并记录所述并行分解与所述全局多维计算空间、当前进程内若干所述局部多维计算空间的对应关系。
10.根据权利要求1所述的数值程序的处理系统,其特征在于,所述读/写请求池中记录各请求信息包含相应多维变量与一个并行分解的对应关系;所述并行读/写专用线程用于根据所述并行分解,确定多维变量中在各进程中的各数据对应于文件中的存放位置的关键字;所述并行读/写专用线程根据所述并行分解,完成已读入数据在所述一组计算节点之间的重新排列分布,完成要写出数据在所述一组计算节点之间的重新排列分布;所述并行读/写流程控制模块根据所述并行分解,完成已读入的数据在同一计算节点内各个进程间的散发,使各进程获得相应多维变量在该进程上若干局部多维计算空间上的数据。
11.根据权利要求1所述的数值程序的处理系统,其特征在于,所述数值程序的处理系统还包括:自适应性能优化模块,所述自适应性能优化模块用于唤醒和休眠所述并行读/写专用线程。
12.根据权利要求11所述的数值程序的处理系统,其特征在于,所述自适应性能优化模块还用于建立所述读/写请求池中读/写请求的优先级,其中,同步读/写请求的优先级高于异步读/写请求;优先级高的读/写请求被所述并行读/写专用线程先获取到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113262.3A CN114138381B (zh) | 2022-01-30 | 2022-01-30 | 一种数值程序的处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113262.3A CN114138381B (zh) | 2022-01-30 | 2022-01-30 | 一种数值程序的处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138381A true CN114138381A (zh) | 2022-03-04 |
CN114138381B CN114138381B (zh) | 2022-06-03 |
Family
ID=80381872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210113262.3A Active CN114138381B (zh) | 2022-01-30 | 2022-01-30 | 一种数值程序的处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138381B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033529A (zh) * | 2022-08-11 | 2022-09-09 | 北京卡普拉科技有限公司 | 一种异步i/o适配方法、系统、存储介质及电子设备 |
CN115328564A (zh) * | 2022-10-17 | 2022-11-11 | 北京卡普拉科技有限公司 | 一种异步输入输出线程处理器资源分配方法及装置 |
CN116225308A (zh) * | 2022-11-21 | 2023-06-06 | 中科三清科技有限公司 | 数据读写方法、装置、存储介质与芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385659B1 (en) * | 1998-08-19 | 2002-05-07 | International Business Machines Corporation | Handling of asynchronous message packet in a multi-node threaded computing environment |
CN109002659A (zh) * | 2018-09-07 | 2018-12-14 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN112395736A (zh) * | 2020-10-09 | 2021-02-23 | 北京仿真中心 | 一种分布交互仿真系统的并行仿真作业调度方法 |
CN113177329A (zh) * | 2021-05-24 | 2021-07-27 | 清华大学 | 数值程序的数据处理系统 |
-
2022
- 2022-01-30 CN CN202210113262.3A patent/CN114138381B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385659B1 (en) * | 1998-08-19 | 2002-05-07 | International Business Machines Corporation | Handling of asynchronous message packet in a multi-node threaded computing environment |
CN109002659A (zh) * | 2018-09-07 | 2018-12-14 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN112395736A (zh) * | 2020-10-09 | 2021-02-23 | 北京仿真中心 | 一种分布交互仿真系统的并行仿真作业调度方法 |
CN113177329A (zh) * | 2021-05-24 | 2021-07-27 | 清华大学 | 数值程序的数据处理系统 |
Non-Patent Citations (2)
Title |
---|
张天文等: "高精度湍流直接数值模拟程序的异构并行优化分析", 《科研信息化技术与应用》 * |
李戈等: "常用数值并行算法的研究与应用", 《河北旅游职业学院学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033529A (zh) * | 2022-08-11 | 2022-09-09 | 北京卡普拉科技有限公司 | 一种异步i/o适配方法、系统、存储介质及电子设备 |
CN115033529B (zh) * | 2022-08-11 | 2022-12-06 | 北京卡普拉科技有限公司 | 一种异步i/o适配方法、系统、存储介质及电子设备 |
CN115328564A (zh) * | 2022-10-17 | 2022-11-11 | 北京卡普拉科技有限公司 | 一种异步输入输出线程处理器资源分配方法及装置 |
CN116225308A (zh) * | 2022-11-21 | 2023-06-06 | 中科三清科技有限公司 | 数据读写方法、装置、存储介质与芯片 |
CN116225308B (zh) * | 2022-11-21 | 2023-12-08 | 中科三清科技有限公司 | 数据读写方法、装置、存储介质与芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN114138381B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138381B (zh) | 一种数值程序的处理系统 | |
US9678497B2 (en) | Parallel processing with cooperative multitasking | |
US8209697B2 (en) | Resource allocation method for a physical computer used by a back end server including calculating database resource cost based on SQL process type | |
Hoemmen | Communication-avoiding Krylov subspace methods | |
EP2819009B1 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
Sudarsan et al. | ReSHAPE: A framework for dynamic resizing and scheduling of homogeneous applications in a parallel environment | |
CN103729480A (zh) | 一种多核实时操作系统多个就绪任务快速查找及调度方法 | |
Wang et al. | Elastic pipelining in an in-memory database cluster | |
CN113590508B (zh) | 动态可重构的内存地址映射方法及装置 | |
Aji et al. | Haggis: turbocharge a MapReduce based spatial data warehousing system with GPU engine | |
US11188532B2 (en) | Successive database record filtering on disparate database types | |
Arefyeva et al. | Memory management strategies in CPU/GPU database systems: A survey | |
Barthels et al. | Designing Databases for Future High-Performance Networks. | |
Thomasian | Performance evaluation of centralized databases with static locking | |
Lynden et al. | Dynamic data redistribution for MapReduce joins | |
EP2375326A1 (en) | Executing operations via asynchronous programming model | |
Zheng et al. | Conch: A cyclic mapreduce model for iterative applications | |
Hippold et al. | Task pool teams for implementing irregular algorithms on clusters of SMPs | |
Petersohn et al. | Scaling Interactive Data Science Transparently with Modin | |
Riha et al. | Task scheduling for GPU accelerated OLAP systems | |
Yang et al. | Fine-grained dynamic load balancing in spatial join by work stealing on distributed memory | |
Zhang et al. | Adapt: An adaptive manycore methodology for software pipelined applications | |
Rehmann et al. | Applications and evaluation of in-memory mapreduce | |
WO2023232127A1 (zh) | 任务调度方法、装置、系统及相关设备 | |
Huber et al. | Query Processing on Multi-Core Architectures. |
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 |