一种并行计算构件、方法及相应并行软件开发方法与系统的制作方法
【专利摘要】本发明涉及并行计算【技术领域】,特别是关于一种并行计算构件、方法及相应并行软件开发方法与系统。并行计算构件包括,并行计算构件接口,为其它单元提供数值数据并返回经过数值计算处理后的数值数据;所述数据分布存储单元,用于在进程的私有内存空间存储数据场和从并行计算构件接口接收的数值数据;所述数据并行通信单元,用于从其他进程的私有内存空间复制数据场存储到本地进程;所述数值并行计算单元,用于根据数值算法的数值模拟计算流程,独立的对本地进程的数值数据进行数值计算。通过上述实施例的方法和系统,可以显著提升软件模块的可复用性、可维护性和可扩展性,显著提升应用软件的计算效率。
【专利说明】一种并行计算构件、方法及相应并行软件开发方法与系统
【技术领域】
[0001]本发明涉及并行计算【技术领域】,特别是关于一种并行计算构件、方法及相应并行软件开发方法与系统。
【背景技术】
[0002]当前,串行程序并行化是数值模拟并行应用软件的常用研发方法,分两个步骤:第一,在小规模计算的条件下,针对实际应用问题,设计数据结构和数值算法,研制串行程序;第二,基于高性能计算机体系结构和并行编程环境,将串行程序并行化,所得并行程序一方面在小规模计算条件下可获得与串行程序一致的模拟结果,另一方面通过增加处理器核数来扩大计算规模。
[0003]串行程序并行化的优点是简单直接,但很难适应实际应用的需求变化和高性能计算机体系结构的复杂化。实际应用的需求变化表现于多物理过程或多时空尺度耦合,代码复杂度持续增长,需要多个团队协同研发;高性能计算机体系结构的复杂化表现于效能墙,实际应用领域专家很难直接编写高效能使用计算机的程序代码。串行程序并行化将并行语句嵌入到串行程序的代码行之间,不改变数据结构、数值算法和模块结构,而串行程序通常面向小规模计算进行设计,实际应用相对简单,较少考虑大规模计算的性能需求,也较少考虑模块的复用,呈现计算效率低、可复用程度低、可维护性和可扩展性差的不足。由此,随着高性能计算机峰值性能的持续提升,随着实际应用的日趋复杂和多样,串行程序并行化的研发方法已经很难适应新一代数值模拟并行应用软件的快速研发,亟待提出新的研发方法和系统。
【发明内容】
[0004]为了解决现有技术并行计算中针对不同应用软件开发复用性差效率低的问题,本发明提出一种并行计算构件、方法及相应并行软件开发方法与系统,显著提升软件模块的可复用性、可维护性和可扩展性,显著提升应用软件的计算效率,使得应用领域专家可以在无需了解计算机复杂体系结构的前提下,串行编程地研发并行应用软件,适应复杂实际应用的数值模拟需求变化和高性能计算机体系结构的复杂化。
[0005]本发明实施例提供了一种并行计算构件,包括,
[0006]并行计算构件接口,用于为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数;
[0007]所述数据分布存储单元,用于在进程的私有内存空间存储数据场和从并行计算构件接口接收的数值数据;
[0008]所述数据并行通信单元,用于从其他进程的私有内存空间的数据场中复制数值并行计算单元依赖的网格单元及网格单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求;
[0009]所述数值并行计算单元,用于根据数值算法的数值模拟计算流程,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
[0010]本发明实施例还提供了一种并行计算构件的生成方法,包括,
[0011]确定并行计算接口的输入和输出,为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数;
[0012]根据数值算法的格式确定数据分布存储单元在进程的私有内存空间存储的数据场和从并行计算构件接口接收的数值数据;
[0013]确定数据并行通信单元从其他进程的私有内存空间的数据场中复制的网格单元和网格单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求;
[0014]确定数值并行计算单元的计算逻辑,编写进程执行的串行子程序,注册到数值并行计算单元,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
[0015]本发明实施例还提供了一种应用并行计算构件的数值模拟并行应用软件开发方法,包括,
[0016]根据数值模拟的应用对象,生成离散网格和离散网格上的物理量值数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间;
[0017]根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤,根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系;
[0018]根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
[0019]本发明实施例还提供了一种应用并行计算构件的数值模拟并行应用软件开发系统,包括,
[0020]数据场分布存储单元,用于根据数值模拟的应用对象,生成离散网格和离散网格上的物理量数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间;
[0021]数值模拟计算流程确定单元,根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤;
[0022]并行计算构件确定单元,用于根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系;
[0023]并行计算构件组装单元,用于根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
[0024]通过上述实施例的方法和系统,可以显著提升软件模块的可复用性、可维护性和可扩展性,显著提升应用软件的计算效率,使得应用领域专家可以在无需了解计算机复杂体系结构的前提下,串行编程地研发并行应用软件,适应复杂实际应用的数值模拟需求变化和高性能计算机体系结构的复杂化。
【专利附图】
【附图说明】
[0025]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0026]图1所示为本发明实施例一种并行计算构件的结构示意图;
[0027]图2所示为本发明实施例一种并行计算构件的生成方法的流程图;
[0028]图3所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发方法的流程图;
[0029]图4所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发系统的结构示意图;
[0030]图5给出了一个计算区域的示意图;
[0031]图6所示为本发明实施例以“迎风离散格式数值并行计算构件”为例说明邻居交换通用数值计算构件的生成过程流程图;
[0032]图7所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发方法的另一个流程图;
[0033]图8所示为本发明实施例前述三维线性对流方程并行数值求解的一个计算流程拓扑。
【具体实施方式】
[0034]为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0035]如图1所示为本发明实施例一种并行计算构件的结构示意图。
[0036]包括并行计算构件接口 101,数据分布存储单元102,数据并行通信单元103,数值并行计算单元104。
[0037]所述并行计算构件接口 101,用于为数据分布存储单元102、数据并行通信单元103和数值并行计算单元104提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数。
[0038]其中,数据场包含离散网格和定义在网格上的物理量值,依据离散网格在各个进程之间的区域剖分,分布存储在相应进程的私有内存空间;计算参数包含独立于离散网格的控制参数和物理参数,计算参数通常由各个进程共享。
[0039]所述数据分布存储单元102,用于在进程的私有内存空间存储数据场和从并行计算构件接口 101接收的数值数据。
[0040]所述数据并行通信单元103,用于从其他进程的私有内存空间的数据场中复制数值并行计算单元104依赖的网格单元及单元上的物理量值,存储到本地进程,满足数值并行计算单元104的数据依赖需求。
[0041]这些操作需要与其他进程进行数据通信才可能完成,而所有进程之间的数据通信是可以并行执行的。
[0042]所述数值并行计算单元104,用于根据数值算法的数值模拟计算流程,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
[0043]其中,数值并行计算单元104在各个进程之间是独立并行计算的。
[0044]作为本发明的一个优选的实施例,所述并行计算构件接口进一步包括,输入接口和输出接口,所述输入接口用于为所述数据分布存储单元102、数据并行通信单元103和数值并行计算单元104提供数值数据;所述输出接口用于输出所述并行计算构件处理后的数值数据。
[0045]作为本发明的一个优选的实施例,所述计算参数由各个进程共享,数据场按网格区域分解,以网格片为单位,分布存储在各个进程的私有内存空间。
[0046]作为本发明的一个优选的实施例,所述数据并行通信单元103的并行通信类型包括:邻居交换类型、全局规约类型、稀疏规约类型和有向扫描类型。在本发明实施例中包括但不限于上述通信类型,在本领域中的通信类型均应当被理解为可以应用到本发明技术方案中。
[0047]作为本发明的一个优选的实施例,所述数值并行计算单元104的并行计算类型包括:物理量调内存、物理量赋初值、通用数值计算、时间步长计算和物理量存新值。在本发明实施例中包括但不限于上述并行计算类型,在本领域中的并行计算类型均应当被理解为可以应用到本发明技术方案中。
[0048]作为本发明的一个优选的实施例,所述数值并行计算单元104为可独立配置以完成不同的数值算法的数值计算功能。
[0049]通过上述实施例中的构件,可以将针对不同的数值算法生成不同的并行计算构件,在并行计算构件中并行计算构件接口,数据分布存储单元,数据并行通信单元均可以通用或者进行小规模的修改,数值并行计算单元可以由应用软件研发专家根据实际应用的个性化需求,根据数值算法串行编程来实例化。数值算法不同,数值并行计算单元也可以不同,但数值数据、数据分布存储单元和数据并行通信单元是一致的。从而,通过复用数值数据、数据分布存储单元和数据并行通信单元,并行计算构件可以适应不同类型的数值算法和不同数值算法软件模块的快速集成,提升软件模块的可复用能力。
[0050]如图2所示为本发明实施例一种并行计算构件的生成方法的流程图。
[0051]包括步骤201,确定并行计算接口的输入和输出,为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数。
[0052]步骤202,根据数值算法的格式确定数据分布存储单元在进程的私有内存空间存储的数据场和从并行计算构件接口接收的数值数据。
[0053]步骤203,确定数据并行通信单元从其他进程的私有内存空间的数据场中复制的网格单元和所述网格单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求。
[0054]步骤204,确定数值并行计算单元的计算逻辑,编写进程执行的串行子程序,注册到数值并行计算单元,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
[0055]作为本发明的一个优选的实施例,所述计算参数由各个进程共享,数据场按网格区域分解,以网格片为单位,分布存储在各个进程的私有内存空间。
[0056]作为本发明的一个优选的实施例,所述数据并行通信单元中的并行通信类型包括:邻居交换类型、全局规约类型、稀疏规约类型和有向扫描类型。在本发明实施例中包括但不限于上述通信类型,在本领域中的通信类型均应当被理解为可以应用到本发明技术方案中。
[0057]作为本发明的一个优选的实施例,所述数值并行计算单元中的并行计算类型包括:物理量调内存、物理量赋初值、通用数值计算、时间步长计算和物理量存新值。在本发明实施例中包括但不限于上述并行计算类型,在本领域中的并行计算类型均应当被理解为可以应用到本发明技术方案中。
[0058]通过上述实施例中方法生成的构件,可以将针对不同的数值算法生成不同的并行计算构件,在并行计算构件中并行计算构件接口,数据分布存储单元,数据并行通信单元均可以通用或者进行小规模的修改,数值并行计算单元可以由应用软件研发专家根据实际应用的个性化需求,根据数值算法串行编程来实例化。数值算法不同,数值并行计算单元也可以不同,但数值数据、数据分布存储单元和数据并行通信单元是一致的。从而,通过复用数值数据、数据分布存储单元和数据并行通信单元,并行计算构件可以适应不同类型的数值算法和不同数值算法软件模块的快速集成,提升软件模块的可复用能力。
[0059]如图3所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发方法的流程图。
[0060]包括步骤301,根据数值模拟的应用对象,生成离散网格和离散网格上的物理量值数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间。
[0061]步骤302,根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤,根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系。
[0062]其中,所述的并行计算功能是指数值模拟功能的一次通信及计算合并为一个并行计算功能。
[0063]步骤303,根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
[0064]作为本发明的一个优选的实施例,所述离散网格包括结构网格或者非结构网格,所述数据场包括坐标系的选择、离散网格的生成、物理量的声明;所述生成离散网格上的物理量数据包括,在离散网格的不同几何位置生成所述物理量数据。
[0065]作为本发明的一个优选的实施例,所述不同几何位置包括,离散网格的单元中心、离散网格的单元节点、离散网格的单元边心、网格片外表边边心、网格片外表棱棱心、网格片外表面面心。
[0066]作为本发明的一个优选的实施例,根据所述并行计算功能确定对应的并行计算构件进一步包括,从并行计算构件库中选择数值算法的格式与所述并行计算功能对应的并行计算构件,如果所述并行计算构件库中没有与所述并行计算功能对应的并行计算构件,则生成数值算法的格式对应于所述并行计算功能的并行计算构件,并加入到所述并行计算构件库中。
[0067]作为本发明的一个优选的实施例,所述生成数值算法的格式对应于所述并行计算功能的并行计算构件进一步包括,确定并行计算接口的输入和输出,为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数;根据数值算法的格式确定数据分布存储单元在进程的私有内存空间存储的数据场和从并行计算构件接口接收的数值数据;确定数据并行通信单元从其他进程的私有内存空间的数据场中复制的网格单元和单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求;确定数值并行计算单元的计算逻辑,编写进程执行的串行子程序,注册到数值并行计算单元,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
[0068]作为本发明的一个优选的实施例,根据所述所有的并行计算构件及其连接关系组装所述并行计算构件进一步包括,根据所述所有的并行计算构件及其连接关系,将所有的并行计算构件进行连接,并实例化所述并行计算构件中的数据分布存储单元、数据并行通信单元、数值并行计算单元,对所述并行计算构件进行配置和定义。
[0069]通过上述本发明实施例的方法,可以显著提升软件模块的可复用性、可维护性和可扩展性,显著提升应用软件的计算效率,使得应用领域专家可以在无需了解计算机复杂体系结构的前提下,串行编程地研发并行应用软件,适应复杂实际应用的数值模拟需求变化和高性能计算机体系结构的复杂化。
[0070]如图4所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发系统的结构示意图。
[0071]包括数据场分布存储单元401,用于根据数值模拟的应用对象,生成离散网格和离散网格上的物理量数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间。
[0072]数值模拟计算流程确定单元402,根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤。
[0073]并行计算构件确定单元403,用于根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系。
[0074]并行计算构件组装单元404,用于根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
[0075]作为本发明的一个优选的实施例,并行计算构件组装单元404进一步包括,配置子单元4041,组装子单元4042,代码生成子单元4043 ;
[0076]所述配置子单元4041,用于对各个并行计算构件进行配置和定义;
[0077]组装子单元4042,用于根据所述所有的并行计算构件及其连接关系,将所有的并行计算构件进行连接;
[0078]代码生成子单元4043,用于实例化所述并行计算构件中的数据分布存储单元、数据并行通信单元、数值并行计算单元。
[0079]通过上述本发明实施例的系统,可以显著提升软件模块的可复用性、可维护性和可扩展性,显著提升应用软件的计算效率,使得应用领域专家可以在无需了解计算机复杂体系结构的前提下,串行编程地研发并行应用软件,适应复杂实际应用的数值模拟需求变化和高性能计算机体系结构的复杂化。
[0080]如图1所示的实施例中,并行计算构件接口 101为数据分布存储单元102、数据并行通信单元103和数值并行计算单元104提供数值数据并返回经过数值并行计算处理后的数值数据。这里,数值数据主要包含数据场和计算参数,其中,数据场包含离散网格和定义在网格上的物理量值,计算参数包含独立于离散网格的控制参数和物理参数。
[0081]并行计算构件接口是并行计算构件获取数值数据或与用户界面进行信息交互的窗P。
[0082]所述用户界面指数值模拟在当前数值并行计算步骤输入或输出的数值计算模型和数值计算参数。
[0083]所述并行计算构件接口包含并行计算构件输入接口和并行计算构件输出接口,所述并行计算构件输入接口为数据分布存储单元102、数据并行通信单元103和数值并行计算单元104提供数值数据,并行计算构件输出接口提供并行计算构件处理后的数值数据。
[0084]数据分布存储单元102,用于在进程的私有内存空间存储数据场,并从并行计算构件接口 101接收的数值数据。数值数据中,计算参数通常由各个进程共享,数据场按网格区域分解,以网格片为单位,分布存储在各个进程的私有内存空间。图5给出了一个计算区域的示意图,被离散为20x20个单元的网格,网格被剖分为7个网格片,其中,第0、1、3、4号网格片分布存储到第O号进程的私有内存空间,第2、5、6号网格片分布存储到第I号进程的私有内存空间,其中,网格片表示网格剖分后形成的子区域,包含该子区域的所有网格单元和定义在网格单元上的所有物理量值。
[0085]数据并行通信单元103,用于从其他进程的私有空间复制数据,这些数据通常需要通过通信,传输并存储到本地进程的私有内存空间,满足数值并行计算单元104的数据依赖需求。数据并行通信单元103在各个进程之间的通信是可以并行执行的。以图5中第O号进程的第3号网格片为例,数值并行计算通常需要邻居的第0、1、4、2、6号网格片提供边界网格单元的物理量值,其中,第0、1、4号网格片的数据可以通过本地内存访问获得,而第2、6号网格片的数据只能通过与第I号进程的数据通信才能获得。
[0086]数值并行计算单元104,根据应用个性的数值算法,对本地进程的数值数据进行数值计算,并将数值计算处理后的数值数据传送给并行计算构件接口 101。以图5中的7个网格片为例,第O号进程依次遍历第0、1、3、4号网格片,第I号进程类似地遍历第2、5、6号网格片,在每个网格片上调用数值计算子程序进行计算,处理相应网格片上网格和物理量值,两个进程是完全独立并行计算的。这里,所述数值计算子程序指根据应用个性的数值算法编写的串行子程序。数值并行计算单元104执行之前,通常需要数据并行通信单元103执行一次数据通信。
[0087]数据并行通信和数值并行计算可以用计算机伪语言的方式表达,也可以用自然语言形式表达,无论是伪语言的方式,还是自然语言的形式,都有严格的并行计算语法要求。
[0088]并行计算构件通过特定的数据并行通信类型和数值并行计算类型表达具体的计算内容。在并行计算构件设计过程中,凡是涉及到数据并行通信或数值并行计算之处,均需使用类型集合中的类型。优选地,本发明实施例中,所述数据并行通信单元103使用如下数据并行通信类型:
[0089]邻居交换类型:沿网格片的边界网格单元,从相邻网格片复制网格结点坐标和网格单元物理量值,存储到边界网格单元的相应内存地址;
[0090]全局归约类型:遍历所有网格片的所有网格单元,为物理量求归约值,包括最大值、最小值、累加和等;
[0091]稀疏归约类型:围绕某个局部区域,遍历覆盖该区域的网格片的网格单元,为物理量求归约值,包括最大值、最小值、累加和等;
[0092]有向扫描类型:按网格单元之间的有向数据依赖关系,遍历所有网格片的所有网格单元,引用相邻网格单元的网格结点坐标和物理量值,完成当前网格单元的数值计算。
[0093]优选地,本发明实施例中,数值并行计算单元104使用如下数值并行计算类型:
[0094]物理量调内存:遍历网格片,为网格结点坐标或网格单元物理量值申请或释放内存空间,内存空间用于存储网格结点坐标的浮点值,或者物理量的浮点或定点值;期间,所有进程可以独立并行执行。
[0095]物理量赋初值:遍历网格片,逐个网格单元地为网格结点坐标或网格单元物理量值赋初值,初值包括浮点值和定点值;期间,所有进程可以独立并行执行。
[0096]通用数值计算:遍历网格片,依据应用个性的数值算法的执行逻辑,逐个网格单元地对网格结点坐标或物理量值进行浮点或定点运算;所有进程可以独立并行执行。
[0097]时间步长计算:遍历网格片,依据应用个性的时间步长数值算法的执行逻辑,逐个网格单元地计算时间步长,求所有网格单元时间步长的最小值并返回;期间,所有进程可以独立并行执行。
[0098]物理量存新值:遍历网格片,逐个网格单元地更新网格结点坐标或网格单元物理量值为当前最新的数值计算结果,为下一次数值并行计算做准备。
[0099]并行计算构件是通过对数值模拟并行应用软件所采用的数值算法的模拟功能的抽象而形成的。针对分布存储的离散网格和物理量值等数值数据,并行计算构件通过数值并行通信和数值并行计算的配置,可以独立地对数值数据进行处理,完成相应的数值计算功能。从而,在数值算法的不同步骤,可以独立地创建和配置不同的并行计算构件,由这些构件可以构建数值模拟并行应用软件。
[0100]三维线性对流方程是数值模拟中需要求解的一类典型方程。确定求解三维线性对流方程的数值算法为迎风离散格式,根据该格式,确定数据并行通信类型为邻居交换类型,数值并行计算类型为通用数值计算类型,从而确定并行计算构件的类型为邻居交换通用数值计算构件。如图6所示为本发明实施例以“迎风离散格式数值并行计算构件”为例说明邻居交换通用数值计算构件的生成过程流程图。
[0101]步骤601,确定数值并行计算中迎风离散格式中并行计算接口的输入和输出,确定待输入的数值数据为迎风离散格式依赖的上一个离散物理时刻的物理量值和计算参数,确定待输出的数值数据为迎风离散格式执行后反馈的当前物理时刻的物理量值和计算参数。
[0102]步骤602,将离散网格和定义在离散网格上的物理量值存储入数据分布存储单元。
[0103]步骤603,根据迎风离散格式中网格片之间的数据依赖关系,为网格片确定需要从邻居网格片网格单元上复制的上一个物理时刻的物理量值,并将物理量注册到并行计算构件的数据并行通信单元中。所有进程的数据并行通信是可以独立并行执行的。
[0104]步骤604,根据迎风离散格式的数值算法逻辑,为网格片编写串行子程序,注册到并行计算构件的数值并行计算单元。所有进程的数值并行计算是可以独立并行执行的。
[0105]三维线性对流方程的迎风离散格式数值并行计算构件制作完毕,可以存储到并行计算构件库中。根据数值模拟并行应用软件的数值算法流程和功能的需求,通过所述并行计算构件库对已创建的并行计算构件进行集中保存和管理。
[0106]如图7所示为本发明实施例一种应用并行计算构件的数值模拟并行应用软件开发方法的另一个流程图。
[0107]包括步骤701,根据并行应用软件的数值模拟应用对象,生成离散网格和离散网格上的物理量值数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间。
[0108]具体的,生成离散网格并进行网格区域剖分,将剖分后的所有子区域(含子区域上的所有网格单元)分配到各个进程;各个进程在各自拥有的子区域上,为网格单元上生成物理量值,形成各自的数值模拟数据场,存储到私有内存空间;所有进程私有内存空间的数值模拟数据场聚集到一起,共同构成分布存储的数值模拟数据场,即前述数据分布存储单元所述数值数据的数据场。
[0109]数据场包含坐标系的选择、离散网格的生成、物理量的声明,其中,离散网格可以是结构网格,也可以是非结构网格;物理量可以定义在离散网格的不同几何位置,包括单元中心、单元节点、单元边心、网格片外表边边心、网格片外表棱棱心、网格片外表面面心等。
[0110]步骤702,根据并行应用软件所采用的数值算法的数值模拟功能,确定待实现的所有并行计算功能,确定由所有并行计算功能构成的计算流程拓扑。
[0111]所述并行计算功能实现步骤指在该步骤中,数据并行通信在各个进程之间至多执行一次,数值并行计算在各个进程之间是独立执行的,将算法流程中的一次通信及其相应的计算合并成为一个并行计算功能。连接这些并行计算功能,构成计算流程拓扑。
[0112]一个计算流程拓扑包含三部分内容,其一是数值数据的初始化,其二是数值数据的数值计算,其三是数值数据的存储。初始化为数值数据赋初值,数值计算依据数值算法的模拟功能依次处理数值数据,存储保存经过数值计算处理后的数值数据。其中,数值计算可以根据数值算法的模拟功能,细化到具体的并行计算功能,直到每项并行计算功能至多需要在进程之间执行一次数值并行通信,从而可以独立地构建一个并行计算构件。
[0113]步骤703,根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系。
[0114]具体的,并行应用软件的计算流程拓扑确定之后,所有并行计算功能就确定了,每项并行计算功能可作为一个步骤,再结合数值算法的执行逻辑,并行应用软件的实现步骤就确定了。图8显示的是前述三维线性对流方程并行数值求解的一个计算流程拓扑。由计算流程拓扑确定,要实现方程的并行数值求解,需要执行三个步骤,包括:初始化、时间步进和接收数值解。其中,初始化细分为物理量申请内存空间(步骤803)和物理量赋初值(步骤804)的两个子步骤;时间步进细分为时间步长的计算(步骤805)、按时间步长积分一个时间步(步骤808)、更新时间步(步骤809)的三个子步骤;接收数值解包含在重要物理时刻存储数值解以方便物理分析(步骤810)和物理量释放内存空间(步骤811)的两个子步骤。所述“按时间步积分一个时间步”又可以分解为计算网格数值通量(步骤806)、更新网格物理量值(步骤807)的两个子步骤。由此,并行数值求解三维线性对流方程的计算流程拓扑包含8项并行计算功能,再结合数值算法的执行逻辑,并行应用软件的8个实现步骤已经确定了。
[0115]并行应用软件的实现步骤确定之后,可以确定并行计算构件和各个并行计算构件之间的连接关系。
[0116]首先,根据计算流程拓扑中的实现步骤,确定各个步骤所对应的并行计算构件,然后根据各个步骤之间逻辑关系确定各个并行计算构件之间的连接关系。
[0117]仍然以前述三维线性对流方程的计算流程拓扑为例。物理量申请内存空间(步骤803)可以由物理量调内存的数值并行计算类型的并行计算构件完成,标记为Al ;物理量赋初值(步骤804)可以由物理量赋初值的数值并行计算类型的并行计算构件完成,标记为A2 ;时间步长的计算(步骤805)可以由时间步长计算的数值并行计算类型的并行计算构件完成,标记为A3 ;计算网格数值通量(步骤806)可以由前述迎风离散格式数值并行计算构件来完成,标记为A4 ;更新网格物理量(步骤807)可以由通用数值计算类型的并行计算构件完成,标记为A5;更新时间步(步骤809)由物理量存新值的数值计算类型的并行计算构件完成,标记为A6 ;接收数值解(步骤810)可以由物理量存新值的数值计算类型的并行计算构件和物理量调内存的数值计算类型的并行计算构件共同完成,分别标记为A7和AS。物理量释放内存空间(步骤811)可以由物理量调内存的数值计算类型的并行计算构件完成,标记为A9。其中步骤803、步骤810和步骤811可以复用物理量调内存的数值计算类型的并行计算构件。
[0118]根据前述计算流程拓扑的实现步骤的逻辑关系,可以确定8个并行计算构件之间的连接关系。并行计算构件Al以步骤701形成的数值数据为输入,为物理量在网格片上申请内存空间,存储物理量的值;并行计算构件A2以并行计算构件Al输出的数值数据作为输入,为具备内存空间的物理量赋初值;并行计算构件A3以并行计算构件A2处理后的数值数据作为输入,依据求解时间步长的数值算法,计算时间步长;并行计算构件A4以并行计算构件A3处理后的数值数据作为输入,依据迎风离散格式的数值算法,计算网格数值通量;并行计算构件A5以并行计算构件A4处理后的数值数据和网格数值通量作为输入,依据更新物理量的数值算法,更新物理量的值;并行计算构件A6以并行计算构件A5处理后的数值数据作为输入,存储当前物理时刻的物理量的值;并行计算构件A7和AS存储并行计算构件A6存储的当前物理时刻的数值数据到外存空间,并行计算构件A9释放并行计算构件A2申请的内存空间。
[0119]并行计算构件可以从预先建立的并行计算构件库中选取。如果并行计算构件无法从并行计算构件库中获取,则可以创建临时并行计算构件,具体创建方法可以参考前述生成构件的方法,为临时并行计算构件进行数值计算功能描述。待临时并行计算构件使用成熟后,将其转为成熟的并行计算构件,添加到并行计算构件库中,供后续并行应用软件的研发使用。
[0120]步骤704,根据所述连接关系组装并行计算构件以形成与待实现数值模拟功能对应的并行应用软件。
[0121]如前所述,此时已经确定了待实现模拟功能所需的并行计算构件和并行计算构件之间的连接关系,根据所述连接关系将各个并行计算构件进行组装即可生成与待实现模拟功能相对应的应用软件。
[0122]组装并行计算构件是指在计算流程拓扑中明确的并行计算构件确定完毕,并在并行计算构件库中没有的并行计算构件也制作完毕之后,按照计算流程拓扑确定的各个并行计算构件之间的连接关系,对各个并行计算构件进行技术要素的配置和定义,包括:属性数据的修改、输入输出参数值定义等,为完成应用软件生成做技术准备。
[0123]当完成并行计算构件组装后,执行“生成代码”操作,可根据系统代码生成的规则和要素,依据并行计算构件,自动生成与LINUX操作系统相对应的并行源代码。对于其他系统的代码生成也同样应被理解为本发明技术方案中的一部分。
[0124]在本发明的一实施例中,生成的代码可以根据地址配置信息,直接生成到指定的服务器的物理路径之下。
[0125]优选地,在本发明的另一实施例中,生成的代码可直接编译运行。
[0126]至此,生成了与待实现模拟功能相对应的数值模拟应用软件。
[0127]并行计算时,数据场已经分布存储在各个进程的私有内存空间;数据分布存储单元为并行计算构件管理存储在进程私有空间的数据场,数据并行通信单元为并行计算构件从其他进程私有空间复制数值并行计算所依赖的非本地进程私有空间存储的网格单元和物理量值,数值并行计算单元独立地执行实际应用个性的数值算法,处理进程私有空间的数据场;并行计算构件接口对外仅输入和输出计算参数和分布存储的数据场。从而,并行计算构件屏蔽了数据场的分布存储,封装了数值并行计算所需的数据并行通信,支持领域专家在无需了解并行计算实现的前提下,串行编程地实现数值模拟计算流程拓扑中的并行计算功能实现步骤。
[0128]离散网格子区域和定义在网格单元的物理值等数据场可以结合高性能计算机体系结构的高性能特征进行优化设计,数据并行通信以及相应的数值计算负载平衡可以由专业的高性能计算专家来实现,从而,并行计算构件具有更高的计算效率,更适应于大规模并行计算。
[0129]高性能计算机体系结构发生变化,只需重新设计或优化设计数据场的分布存储结构、数据并行通信单元,无需更改并行计算构件接口、数据并行存储单元和数值并行计算单元,以及应用软件的数值模拟计算流程拓扑,从而,计算构件和应用软件可以快速适应高性能计算机体系结构的复杂化。
[0130]在并行计算构件的内部,数值并行计算单元可以由应用软件研发专家根据实际应用的个性化需求,根据数值算法串行编程来实例化。数值算法不同,数值并行计算单元也可以不同,但数值数据、数据分布存储单元和数据并行通信单元是一致的。例如,在前述迎风离散格式数值并行计算构件的生成中,迎风离散格式可以不同,但这些格式的并行计算接口、数据分布存储和数据并行通信可以一致。从而,通过复用数值数据、数据分布存储单元和数据并行通信单元,并行计算构件可以适应不同类型的数值算法和不同数值算法软件模块的快速集成,提升软件模块的可复用能力。
[0131]数值模拟流程拓扑可以根据应用软件的待实现数值模拟功能定制,所有并行计算构件可以独立地动态构造,即使在并行计算构件的内部,数据分布存储单元、数据并行通信单元和数值并行计算单元也可以独立地设计和实现,所有并行计算构件和并行计算构件的内部部件均可以由不同的个人或团队独立完成,因此,基于并行计算构件的并行应用软件研发方法可以显著提升代码的可维护和可扩展能力,更好地适应实际应用的需求变化。
[0132]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种并行计算构件,其特征在于包括, 并行计算构件接口,用于为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数; 所述数据分布存储单元,用于在进程的私有内存空间存储数据场和从并行计算构件接口接收的数值数据; 所述数据并行通信单元,用于从其他进程的私有内存空间的数据场中复制数值并行计算单元依赖的网格单元及网格单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求; 所述数值并行计算单元,用于根据数值算法的数值模拟计算流程,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
2.一种并行计算构件的生成方法,其特征在于包括, 确定并行计算接口的输入和输出,为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数; 根据数值算法的格式确定数据分布存储单元在进程的私有内存空间存储的数据场和从并行计算构件接口接收的数值数据; 确定数据并行通信单元从其他进程的私有内存空间的数据场中复制的网格单元和网格单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求; 确定数值并行计算单元的计算逻辑,编写进程执行的串行子程序,注册到数值并行计算单元,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
3.一种应用并行计算构件的数值模拟并行应用软件开发方法,其特征在于包括, 根据数值模拟的应用对象,生成离散网格和离散网格上的物理量值数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间; 根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤,根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系; 根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
4.根据权利要求3所述的一种应用并行计算构件的数值模拟并行应用软件开发方法,其特征在于,根据所述并行计算功能确定对应的并行计算构件进一步包括,从并行计算构件库中选择数值算法的格式与所述并行计算功能对应的并行计算构件,如果所述并行计算构件库中没有与所述并行计算功能对应的并行计算构件,则生成数值算法的格式对应于所述并行计算功能的并行计算构件,并加入到所述并行计算构件库中。
5.根据权利要求4所述的一种应用并行计算构件的数值模拟并行应用软件开发方法,其特征在于,所述生成数值算法的格式对应于所述并行计算功能的并行计算构件进一步包括,确定并行计算接口的输入和输出,为数据分布存储单元、数据并行通信单元和数值并行计算单元提供数值数据并返回经过数值计算处理后的数值数据,所述数值数据主要包含数据场和计算参数;根据数值算法的格式确定数据分布存储单元在进程的私有内存空间存储的数据场和从并行计算构件接口接收的数值数据;确定数据并行通信单元从其他进程的私有内存空间的数据场中复制的网格单元和单元上的物理量值,存储到本地进程,满足数值并行计算单元的数据依赖需求;确定数值并行计算单元的计算逻辑,编写进程执行的串行子程序,注册到数值并行计算单元,独立的对本地进程的数值数据进行数值计算,并将数值计算后的数值数据传送给并行计算构件接口。
6.根据权利要求3所述的一种应用并行计算构件的数值模拟并行应用软件开发方法,其特征在于,所述的并行计算功能是指数值模拟功能的一次通信及计算合并为一个并行计算功能。
7.根据权利要求3所述的一种应用并行计算构件的数值模拟并行应用软件开发方法,其特征在于,根据所述所有的并行计算构件及其连接关系组装所述并行计算构件进一步包括,根据所述所有的并行计算构件及其连接关系,将所有的并行计算构件进行连接,并实例化所述并行计算构件中的数据分布存储单元、数据并行通信单元、数值并行计算单元,对所述并行计算构件进行配置和定义。
8.一种应用并行计算构件的数值模拟并行应用软件开发系统,其特征在于包括, 数据场分布存储单元,用于根据数值模拟的应用对象,生成离散网格和离散网格上的物理量数据,形成数值模拟数据场,分布存储到各个进程的私有内存空间; 数值模拟计算流程确定单元,根据所述数值模拟的应用对象待实现的数值模拟功能,确定多个并行计算功能的实现步骤; 并行计算构件确定单元,用于根据所述并行计算功能确定对应的并行计算构件,并根据所述实现步骤确定所述并行计算构件之间的连接关系; 并行计算构件组装单元,用于根据所有的并行计算构件及其连接关系组装所述并行计算构件,形成与待实现数值模拟功能一致的并行应用软件。
9.根据权利要求8所述的一种应用并行计算构件的数值模拟并行应用软件开发系统,其特征在于,并行计算构件组装单元进一步包括,配置子单元,组装子单元,代码生成子单元; 所述配置子单元,用于对各个并行计算构件进行配置和定义; 组装子单元,用于根据所述所有的并行计算构件及其连接关系,将所有的并行计算构件进行连接; 代码生成子单元,用于实例化所述并行计算构件中的数据分布存储单元、数据并行通信单元、数值并行计算单元。
【文档编号】G06F9/38GK104375806SQ201410662947
【公开日】2015年2月25日 申请日期:2014年11月19日 优先权日:2014年11月19日
【发明者】莫则尧, 张爱清, 曹小林, 刘青凯, 徐小文, 廖丽 申请人:北京应用物理与计算数学研究所