基于核反应堆数值软件运行特性的并行调度技术研究

2021-07-10 11:13曹国海张尧毅张思原王雅峰
科技视界 2021年17期
关键词:计算资源密集型队列

曹国海 芦 韡 张尧毅 张思原 庞 勃 王雅峰

(中国核动力研究设计院核反应堆系统设计技术重点实验室,四川 成都610213)

0 引言

近年来,国际上针对高分辨、高精度的数值反应堆数值计算技术开展了大规模研究。通过精细的建模、先进的理论模型,显著提升了反应堆数值计算的精度水平,以期为提高反应堆安全性和经济性提供先进的技术支持,随着我国超级计算机的快速发展,目前已达到亿亿次水平,为我国反应堆的高分辨率数值计算提供了硬件支持,为核能领域大规模数值计算与HPC相互结合奠定了基础。而不同的计算软件运行特点不同,对各类计算资源的需求也各异。高性能计算服务器为众多的计算软件提供了共享的运行环境,如果对计算任务不进行有针对性地执行调度,一方面不能充分发挥计算软件的并行计算效率;另一方面也会因为软件间不合理的抢占资源冲突而大大降低高性能计算资源的利用率,从而进一步降低计算软件的计算效率。

本文针对反应堆一回路系统研发所涉及的物理、热工、燃料、屏蔽等专业典型计算软件从并行执行情况、执行所需CPU以及内存资源、作业类型、耗时情况等运行特征进行了分析;研究了核反应堆计算软件并行计算特征提取及表达方法,根据软件运行特性建立了计算资源全局统筹的并行执行调度方法,该方法包括资源监控器、调度策略库及并行执行调度模块;资源监控器用于实时获取当前集群系统的各类计算节点、核数、内存资源利用情况;调度策略库对各种差异化的执行调度策略集合及规则进行集中管理,需预先设置完成;调度策略库采用基于“IFTHEN”的规则描述方面,每条调度策略包括了IF部分、THEN部分两个元素,其中IF部分是前项(前提或条件),常对专业软件类型、资源大小、计算耗时长短等信息进行描述,THEN部分是后项结论或行为,常对计算任务的分区、计算优先级、是否独占计算节点等内容进行描述;自适应并行执行调度模块根据软件的并行特征,实施并行计算。通过并行执行调度方法,使得超算下计算任务能有序合理地调度,能极大地提升核反应堆计算软件并行运行效率与高性能计算资源的利用率,一定限度上提高反应堆设计研发效率。

1 典型核反应堆设计分析软件运行特点研究

针对核反应堆一回路研发中涉及的物理、热工、燃料、屏蔽这4个专业中的典型软件对其具体运行特征进行了分析,下文将针对运行环境、并行执行情况、执行所需资源、作业类型几方面对进行对比,内容见表1。

通过表1可知,软件分为支持并行和不支持并行两类。作业类型分为CPU密集型和I/O密级型,对执行资源的需求主要是核数和内存上,调度系统应针对软件支持并行和不支持并行,结合CPU核数和内存需求,适应性地分配计算节点和核数,针对I/O密级型和CPU密集型,综合考虑,建立高效的调度策略,合理设定任务执行优先级,使得不同的任务运行时间都能满足用户的需求。基于现有超算资源,研究先进的调度系统,优化现有软件运行效率,能为工作效率的提高提供相应的技术支持。

表1 典型软件运行特点对比

2 策略库的设计

数值计算协同设计需要集成多个学科的计算设计软件,不同的计算软件运行特点不同,所需的计算资源也不同,为了更好地利用计算资源,让各个软件的计算效率得到充分发挥,需要根据软件运行特征和高性能计算资源建立并行调度策略,实现高性能集群系统的计算任务负载均衡,下文将从作业类型、支持并行情况、运行耗时情况、内存需求等方面综合考虑建立策略库,具体叙述如下。

在策略库设计时,首先根据作业运行时内存需求和耗时情况进行分类,然后建立队列,将不同类作业存放到不同队列中,详细情况如图1所示。

图1 作业的初步分类

从图1可知,首先将作业根据耗时情况分为两类:一类主是运行耗时达月级及以上的作业,存放到队列L中;另一类是运行耗时在月级以下的作业,存放到队列M,同时分别在队列M和队列L中针对作业运行时内存占用情况,进一步细分,G1、G2队列主要运行内存占用G级及以上的作业,G1’、G2’队列运行内存占用G级以下的作业。

根据作业耗时和运行时内存占用情况将作业进行分类后,还需考虑作业的类型,针对CPU密集型和I/O密级型设定不同的优先级,本文考虑I/O密集型需要频繁I/O,对CPU利用率不高的问题,在CPU密级型和I/O密集型同时竞争调度资源时,采用改进型时间片轮转法,具体描述如图2所示。

图2 作业运行优先级的确定

从图2所知,当遍历图1中队列中任务,确定优先级时,首先判断队列中作业类型,如果只有一种类型,则采用先来先服务算法,判断队列中作业到来时间,将最早到来的作业C1优先级设定为最高;如果队列中作业同时包含CPU密集型和I/O密集型,则执行改进型时间片轮转算法,将到来的I/O密集型作业的时间片加1,CPU密集型作业的时间片不变,判断I/O密集型作业时间片数量大于2时,将此作业的优先级设定为最高,如队列中没有时间片数量大于2的I/O密集型作业,则采用先来先服务遍历CPU密集型作业,将最先到来的CPU密级型作业的优先级设定为最高。

根据图2所示确定最高优先级作业后,需判断作业支持并行的情况,针对支持并行的作业可按实际情况分配多个节点,多个核供作业计算使用。

3 执行调度的设计

数值计算协同设计并行调度功能模块的总体技术方案如图3所示。

图3 数值计算协同设计系统并行调度总体技术方案

设计用户基于集成平台构建计算流程,对流程中的每个计算任务可进行建模、计算、等操作;上述的执行操作会被构建成一个个的计算任务包,计算任务包主要是将任务的计算程序信息、所需资源等计算信息进行封包,投递到高性能计算服务器上进行计算。

并行调度功能模块中的“任务队列”是一个分布式的消息队列的实现,它主要用于存放任务包,以排队的方式等待获取资源进行执行,而不是全部任务同时进行争抢资源,任务队列根据上文策略库中调整策略进行调度;“任务监控”是建立在任务队列基础上的一个界面系统,可以通过它查看队列里的任务数量、等待状况、执行情况,并且可以取消任务和查看任务输出日志,支持命令行和界面操作,同时,对任务执行的关键环节(如完成或取消终止)可以发出事件响应;“任务调度器”需要与“调度策略库”配合使用,其中,调度器是一个一直运行并轮询检测是否执行任务并有足够的资源运行。它会判断任务队列和资源信息两个条件都满足的情况下,获取任务队列中的任务包发送到HPC节点上进行运行。

为了自动化实现上述过程,根据任务不同状态设计了6个符合计算任务队列,分别对应等待队列、就绪队列、调度队列、运行队列、错误退出队列、正常完成队列;此外,每个队列都对应着一个监控工作线程,监控工作线程的主要职责是负责根据计算实例状态的变化,实时地完成计算实例在不同队列之间进行转移。

4 调度技术的实现及效果

执行调度功能模块包括了计算执行管理、计算实例并行管理、计算组并行管理3个功能子模块,详见表2;提供了计算、计算组、项目3种不同粒度的并行执行,粒度最小的计算执行管理模块是实现执行调度的基础与核心。

表2 执行调度功能模块子模块

其核心算法主要实现了调度队列监控线程、运行队列监控线程、等待队列监控线程、完成队列监控线程等,设计人员提交执行任务后,系统自动地分析用户提交的计算节点运行状态,并将其保存到不同调度队列中,执行调度器获取各队列的任务,按照相应流程调度执行,设计人员不用关注任务调度的细节,执行调度器算法实现流程如图4所示。

图4 执行调度器算法

5 结语

本文研究了核反应堆一回路研发所涉及的物理、热工、燃料、屏蔽专业典型计算软件运行特点,针对不同软件运行特点完成了策略库的设计,并研制了数值计算协同设计系统执行调度模块,通过该模块实现了超算下计算任务有序合理的调度,能极大地提升核反应堆计算软件并行运行效率与高性能计算资源的利用率。

猜你喜欢
计算资源密集型队列
基于模糊规划理论的云计算资源调度研究
压痛点密集型银质针温针灸治疗肱骨外上髁炎的临床观察
队列里的小秘密
改进快速稀疏算法的云计算资源负载均衡
密集型快速冷却技术在热轧带钢生产线的应用
在队列里
密集型自动化立体仓库解析
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
丰田加速驶入自动驾驶队列