一种提高前处理模块和后处理模块效率的方法及***
技术领域
本发明涉及WRF(中尺度数值气象预报)领域,特别涉及一种提高前处理模块和后处理模块效率的方法及***。
背景技术
WRF技术主要研究大气中尺度运动,关系到区域重大灾害性天气的产生和发展变化。主要应用卫星、雷达、风廓线仪和自动观测站等探测工具,对中尺度天气过程进行模拟研究和预报试验。
WRF***具有巨大的、惊人的计算量,包括前处理(WPS)模块、主模式模块以及后处理模块。参见图1,在WRF前处理模块启动前,需要将输入到前处理模块的GFS(全球预报***)气象数据由存储设备中拷贝至计算节点的硬件***内存RAM中,之后启动前处理模块对GFS数据进行处理;接着启动WRF主模式模块进行积分运算,然后将WRF主模式模块的计算结果由存储设备中拷贝至计算节点的硬件***内存RAM中,之后启动WRF***中的后处理模块对WRF计算结果进行后处理。快速地将GFS(全球预报***)气象数据以及将主模式模块的计算结果由存储设备拷贝至计算节点的硬件***内存RAM中,是提高前处理模块和后处理模块的数据处理效率的一个重要因素。
如何将输入到前处理模块的GFS(全球预报***)气象数据快速地拷贝至硬件***内存RAM中以及将WRF主模式模块的计算结果快速地拷贝至硬件***内存RAM中,是一个亟待解决的问题。
发明内容
为解决上述问题,本发明提供了一种提高前处理模块和后处理模块效率的方法,其特征在于,包括以下步骤:
A.为I/O节点设置锁变量;
B.通过为所述锁变量赋值,控制计算节点和存储设备进行数据交互操作。
通过在I/O节点上设置锁变量,控制装置可依次启动各个计算节点组中的计算节点执行***所分配的任务。
其中,步骤B包括:配置与所述存储设备进行数据交互操作的计算节点,并将所述计算节点的标识符存储在所述锁变量中;接收各个计算节点的读写启动命令;当计算节点的标识符包含在所述锁变量中所存储的计算节点标识符中,则所述计算节点通过所述I/O节点对所述存储设备中的数据进行读写操作,并在所述计算节点完成对所述存储设备中的数据读写操作后,控制装置清空所述锁变量,并对所述锁变量重新进行赋值。
控制装置根据***所分配的任务,可依次将计算节点组中的计算节点的标识符赋值给锁变量,只有锁变量标识过的计算节点才可通过I/O节点与存储设备进行数据交互操作,其他节点无法通过I/O节点与存储设备进行数据交互操作,从而可实现依次启动各个计算节点组中的计算节点执行***所分配的任务。
其中步骤B中的接收各个计算节点的读写启动命令后,还包括:当计算节点的标识符没有包含在所述锁变量中的计算节点标识符中,则将所述计算节点的标识符存储到等待队列中,并在所述控制装置清空所述锁变量并对所述锁变量重新进行赋值时,将所述等待队列中排在前面的计算节点标识符存储到所述锁变量中。
通过锁变量,其他节点无法连通存储设备,从而确保锁变量中的计算节点进行读写操作,当该计算节点完成读写操作后,才将等待队列中的计算节点分配给锁变量,从而实现依次启动各个计算节点组中的计算节点执行***所分配的任务。
其中,所述等待队列的计算节点按照提出读写请求的时间进行排序。
通过时间控制各个计算节点的读写操作,提供了数据处理的效率。
其中,所述等待队列的计算节点按照读写请求的优先级进行排序。
通过优先级控制各个计算节点的读写操作,提供了数据处理的效率。
其中,所述计算节点是通过计算节点组与所述存储设备相连接。
通过将计算节点分组,通过组来完成***所分配的任务,提高了数据处理的效率。
本发明提供了一种提高前处理模块和后处理模块效率的***,包括:至少多于一个的计算节点、存储设备、用于连接所述计算节点和存储设备的I/O节点以及控制装置,其特征在于,所述控制装置还包括:锁变量设置单元,用于为I/O节点设置锁变量;控制单元,用于通过为所述锁变量赋值,控制计算节点和存储设备进行数据交互操作。
通过在I/O节点上设置锁变量,控制装置可依次启动各个计算节点组中的计算节点执行***所分配的任务。
其中,所述控制单元包括:锁变量赋值模块,用于配置与所述存储设备进行数据交互操作的计算节点,并将所述计算节点的标识符存储在所述锁变量中;接收模块,用于接收各个计算节点的读写启动命令;判断模块,用于判断该计算节点的标识符是否包含在锁变量中所赋值的计算节点的标识符表中;第一执行模块,用于当计算节点的标识符没有包含在所述锁变量中的计算节点标识符中,则将所述计算节点的标识符存储到等待队列中,并在所述控制装置清空所述锁变量并对所述锁变量重新进行赋值时,将所述等待队列中排在前面的计算节点标识符存储到所述锁变量中。
控制装置根据***所分配的任务,可依次将计算节点组中的计算节点的标识符赋值给锁变量,只有锁变量的计算节点才可通过I/O节点与存储设备进行数据交互操作,其他节点无法通过I/O节点与存储设备进行数据交互操作,从而可实现依次启动各个计算节点组中的计算节点执行***所分配的任务。
其中,所述控制单元还包括:第二执行模块,用于当计算节点的标识符没有包含在所述锁变量中的计算节点标识符中,则将所述计算节点的标识符存储到等待队列中,并在所述控制装置清空所述锁变量并对所述锁变量重新进行赋值时,将所述等待队列中排在前面的计算节点标识符存储到所述锁变量中。
通过锁变量,其他节点无法连通存储设备,从而确保锁变量中的计算节点进行读写操作,当该计算节点完成读写操作后,才将等待队列中的计算节点分配给锁变量,从而实现依次启动各个计算节点组中的计算节点执行***所分配的任务。
附图说明
图1为WRF(中尺度数值气象预报)***的工作流程图;
图2为本发明实施例所提供的一种提高前处理模块和后处理模块效率的方法的流程图;
图3本发明实施例所提供的一种提高前处理模块和后处理模块效率的***的结构示意图。
具体实施方式
下面将结合附图,对本发明实施例进行详细描述。参见图2,本发明实施例提供了一种提高前处理模块和后处理模块效率的方法,该方法包括以下步骤:
S200:中心控制装置为I/O节点设置锁变量;
在存储设备中,存储有大量的在前处理模块中所需要的GFS(全球预报***)气象数据,在前处理模块启动前,需要将这些数据从 该存储设备中读取到计算节点中,然后启动前处理模块对这些GFS(全球预报***)气象数据进行处理,再启动主模式模块进行积分运算,积分计算的结果也存储在存储设备中,在后处理模块启动前,需要将主模式模块从该存储设备中读取到计算节点中。在本实施例中,以将存储设备中的GFS(全球预报***)气象数据拷贝至计算节点的硬件***内存RAM中为示例,同样可以理解,本发明的方法也适用于将存储设备中的主模式的计算结果拷贝至计算节点的硬件***内存RAM中。
在WRF***中,计算节点与存储设备的连接关系,参见图3,计算节点的数目和I/O节点的数目,可根据需要处理的任务量进行配置,根据需要完成的任务要求,为该任务配置计算节点组以及相应的计算节点,在该***中,每个计算节点具有唯一的标识符,同时根据该任务的要求,可将计算节点分组,从而可以将需要处理的任务分为几部分,由不同的组执行该任务的不同部分。在该示例中,根据需要处理的任务配置24个计算节点,3个I/O节点,将计算节点分为6组,每组4个计算节点。计算节点组分别通过光纤变换器与I/O节点相连接,并通过I/O节点与存储设备相连接,计算节点组内的计算节点相互电连接。
计算节点与I/O节点的连接,可通过组的方式相连接,例如,组1、组2......组5、组6分别与计算节点的组与I/O节点相连接,每组的计算节点分别通过其所属的组与I/O节点连接,并通过I/O节点与存储设备相连接,控制装置为I/O节点设置锁变量,对锁变量赋值就是将允许通过I/O节点读取存储设备中的数据的计算节点的名称;控制装置通过为锁变量赋值,控制各个计算节点读取存储设备的数据。
控制装置依据从作业调度***(torque)中获取的计算节点组所包含的计算节点名称赋值锁变量,确保锁变量中的每个计算节点具有充足的读取时间,进行数据的读取操作。在上述计算节点进行读取操作的时间内,其他计算节点组中的计算节点在此过程中处于排 队等待状态,可按照其他计算节点组中的计算节点提出读写请求的时间进行排序或按照其他计算节点组中的计算节点读写操作的优先级进行排序。
S210:中心控制装置接收读写启动命令,并根据该读写启动命令,为I/O节点的锁变量赋值;
控制装置接收***发送的启动计算节点读取存储设备中的数据的命令,并根据该命令,控制各个计算节点读取存储设备中的数据。
当***采用并行阵列进行计算时,各个计算节点同时对存储设备的数据进行读取,由于频繁的读写控制和操作,使得数据处理效率极其低下,甚至造成数据读写瓶颈,无法进行数据的读取。
当中心控制装置接收到***发送的启动计算节点读取存储设备中的数据的命令,根据该读写启动命令,为I/O节点上锁变量进行赋值,中心控制装置为使每个计算节点都具有充足的读写时间,需要依次启动各个计算节点组,通过将一个计算节点组中的计算节点赋值给锁变量,从而通过锁变量,使其它计算节点组中的计算节点无法读取存储设备中的数据,当该计算节点组中的计算节点完成读写操作后,控制装置清空I/O节点上的锁变量,并可依据计算节点组排队顺序将下组计算节点名称赋值给锁变量,从而使这组计算节点可以读取存储设备中的数据。以此类推,依次启动不同计算节点组的计算节点进行存储数据操作。
S220:当计算节点的名称包含在锁变量中所赋值的计算节点的名称表中,该计算节点通过I/O节点读取所述存储设备中的数据;
控制装置通过在I/O节点上设置锁变量,依次将计算节点组中的计算节点的名称赋值给锁变量,只有满足锁变量的计算节点通过I/O节点与存储设备进行数据交互操作,其他节点无法通过I/O节点与存储设备进行数据交互操作,从而可实现依次启动各个计算节点组中的计算节点执行***所分配的任务。
S230:当所述计算节点完成读写操作后,清空锁变量中的计算节点表,并为当前锁变量赋值;
当前锁变量中的计算节点组完成读写操作后,控制装置会清空I/O节点上的锁变量并可依据计算节点组排队顺序将下组计算节点名称赋值给锁变量,例如,控制装置从作业调度***(torque)中读取最先提出I/O读写请求的计算节点组中各计算节点名称,将计算节点名称赋值给控制装置为I/O节点所设置的锁变量,赋值后锁变量允许I/O节点与当前锁变量所赋值的计算节点组中的计算节点发生读写交互。通过当前锁变量,允许其锁变量所赋值的计算节点组与I/O节点发生读写交互。控制装置按照此运行规则控制计算节点与I/O节点读写,从而确保I/O节点始终以较高的效率运行。
重复执行步骤S220和S230,直至完成***分配的任务。
在本实施例中各个计算节点从存储设备中读取的是在前处理模块中所需要的GFS(全球预报***)气象数据,同样可以理解的是,本实施例的上述方法同样适用于将主模式模块的计算结果从硬件***内存拷贝至存储设备中,以及从存储设备中拷贝至硬件***内存RAM中。
本发明实施例提供了一种提高前处理模块和后处理模块效率的***,参见图3,该***包括:计算节点300,分别与计算节点光连接的I/O节点310、与I/O节点310电连接的控制装置320以及与控制装置320电连接的存储设备330。控制装置320包括锁变量设置单元和控制单元,锁变量设置单元用于为I/O节点设置锁变量;控制单元,用于通过为所述锁变量赋值,控制计算节点和存储设备进行数据交互操作。
其中控制单元包括:锁变量赋值模块,用于配置与所述存储设备进行数据交互操作的计算节点,并将所述计算节点的标识符存储在所述锁变量中;接收模块,用于接收各个计算节点的读写启动命令;判断模块,用于判断该计算节点的标识符是否包含在锁变量中所赋值的计算节点的标识符表中;第一执行模块,用于当计算节点的标识符没有包含在所述锁变量中的计算节点标识符中,则将所述计算节点的标识符存储到等待队列中,并在所述控制装置清空所述 锁变量并对所述锁变量重新进行赋值时,将所述等待队列中排在前面的计算节点标识符存储到所述锁变量中。
其中控制单元还可包括:第二执行模块,用于当计算节点的标识符没有包含在所述锁变量中的计算节点标识符中,则将所述计算节点的标识符存储到等待队列中,并在所述控制装置清空所述锁变量并对所述锁变量重新进行赋值时,将所述等待队列中排在前面的计算节点标识符存储到所述锁变量中。
本发明***的实施例对应方法实施例,该***可以实施上述方法的任一步骤,其具体实现参见方法实施例。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,例如,可以将不同功能的模块通过一个集成芯片来实现等,均在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。