CN114595580B - 一种满足大型柔性叶片优化设计的复杂工作流引擎方法 - Google Patents
一种满足大型柔性叶片优化设计的复杂工作流引擎方法 Download PDFInfo
- Publication number
- CN114595580B CN114595580B CN202210233156.9A CN202210233156A CN114595580B CN 114595580 B CN114595580 B CN 114595580B CN 202210233156 A CN202210233156 A CN 202210233156A CN 114595580 B CN114595580 B CN 114595580B
- Authority
- CN
- China
- Prior art keywords
- workflow
- loop
- node
- dag
- nodes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000005457 optimization Methods 0.000 title claims abstract description 65
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 21
- 238000013515 script Methods 0.000 claims description 23
- 238000007781 pre-processing Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000012805 post-processing Methods 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 230000002068 genetic effect Effects 0.000 claims description 6
- 230000035945 sensitivity Effects 0.000 claims description 6
- 238000010206 sensitivity analysis Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 3
- 101000823100 Homo sapiens Putative alpha-1-antitrypsin-related protein Proteins 0.000 claims description 2
- 102100022709 Putative alpha-1-antitrypsin-related protein Human genes 0.000 claims description 2
- 230000008030 elimination Effects 0.000 claims description 2
- 238000003379 elimination reaction Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/17—Mechanical parametric or variational design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Entrepreneurship & Innovation (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种满足大型柔性叶片优化设计的复杂工作流引擎方法,包括:1)将柔性叶片优化设计的整体工作流程表达为业务工作流;2)通过XML语言描述业务工作流的循环树;3)利用循环展开或嵌套展开的方法将循环树转化为无循环DAG;4)将无循环DAG转换为可执行的工作流DAG描述文件;5)将DAG描述文件提交到基于HTCondor的复杂工作流引擎;6)工作流引擎将任务调度到并行计算平台上执行。本发明保障了工作流各节点间的依赖关系,同时支持嵌套循环工作流,并满足柔性叶片应用迭代优化的需求。此外,本发明将并行计算平台中基于异构操作系统的计算资源进行高效整合,从而支持大规模任务的调度和并行计算。
Description
技术领域
本发明涉及柔性叶片优化、工作流调度和并行计算等领域,特别是设计一种满足大型柔性叶片优化设计的复杂工作流引擎方法。
背景技术
有向无环图(DAG)经常被用于构造航空应用领域的工作流程,其中DAG的节点和边分别代表不同的任务以及任务之间的连接。DAG可以非常有效地描述科学工作流程中的复杂计算依赖性。然而,DAG的定义中要求科学工作流中没有循环,因此首先需要将循环工作流转换为无循环DAG。为了支持科学应用中使用的循环工作流程,循环展开和递归展开可消除循环从而将循环工作流程转换为传统的DAG。
除了有环依赖图表示与执行工作流的有向无环依赖图之间的冲突,实际业务工作流中还存在本地运行节点与远程集群运行节点的区分。由于业务工作流中同时包含本地预处理、后处理节点与远程计算集群上执行的高并行度、高计算密集型作业节点,而实际执行工作流中各个节点均被视为计算节点,因此业务工作流相比实际执行工作流又引入新的本地、远程计算的抽象。上述业务工作流与执行工作流之间的表达冲突与抽象层次的不同为业务工作流与执行工作流之间的自动转化带来了挑战。
在实际的业务工作流中,迭代求解过程中的循环迭代次数往往并不可知,而循环终止的收敛条件是已知的。因此,业务工作流需要支持对循环终止条件进行运行时的判断,并在达到终止条件时及时停止业务工作流的执行。然而,引入循环终止条件后,循环控制相较没有引入循环终止条件时有了很大程度的不确定性。具体来说,由于每次迭代后需要进行条件判断来决定是否继续循环,从而无法直接使用循环展开或嵌套展开的方法进行DAG执行工作流图的构建与生成。
综上所述,复杂工作流引擎需要保障工作流各节点间的依赖关系,同时支持嵌套循环工作流,并满足航空应用迭代优化的需求。此外,需要将并行计算平台中基于异构操作系统的计算资源进行高效整合,从而支持大规模任务的调度和并行计算。
发明内容
本发明技术解决问题:克服现有技术的不足和缺陷,提供一种满足大型柔性叶片优化设计的复杂工作流引擎方法,并将柔性叶片优化设计的整体工作流程定制化地表达为结构优化工作流。具体来说,为此,本发明通过可扩展标记语言(Extensible MarkupLanguage,简称为XML)对业务工作流进行描述,并自动将XML语句转换为可执行的工作流DAG描述文件,再提交到高通量调度系统(HTCondor)从而将工作流任务分配到底层计算平台上执行。本发明通过XML语言描述叶片优化设计的业务工作流,将消除循环后的业务工作流转换为可执行的工作流DAG描述文件,再将DAG描述文件交由复杂工作流引擎从而实现任务在并行计算平台上的自动调度与执行。
本发明的技术解决方案,满足大型柔性叶片优化设计的复杂工作流引擎方法,包括如下步骤:
步骤1:设计柔性叶片优化设计的整体工作流程,并将工作流程表达为支持柔性叶片优化设计的业务工作流,包括将整体工作流程拆分为并行或串行处理的任务、确定任务的输入和输出、判断内外循环的位置和终止条件,最终生成支持叶片优化设计的业务工作流;
步骤2:通过可扩展标记语言将业务工作流描述为树形结构的XML源文件,其中XML树对柔性叶片优化设计进行配置和管理;
步骤3:通过XML解析器解析XML源文件中定义的描述语句,该解析器将XML树转换为具有循环嵌套关系的计算工作流;
步骤4:通过引入新的工作流节点将带有循环终止条件的计算工作流自动转化为标准的循环工作流,该新的工作流节点支持对循环终止条件进行运行时的判断,并在达到终止条件时跳过其管理的计算节点和相应的后处理进程;
步骤5:通过循环展开或嵌套展开的方法将计算工作流转换为复杂工作流引擎所支持的有向无环图DAG,无循环的有向无环图DAG描述了叶片优化设计流程中的任务间的复杂计算依赖性;
步骤6:通过自动转化工具将无循环有向无环图DAG转化为可执行的工作流DAG描述文件和作业描述文件,其分别定义工作流DAG和DAG中的实际任务;
步骤7:将DAG描述文件和作业描述文件提交到高通量调度系统,高通量调度系统中的DAGMan模块自动调度工作流中的相关任务到底层计算平台上执行;
步骤8:工作流执行结束后,DAGMan模块将叶片优化设计的结果文件从计算平台返回到提交机器上,再终止DAG任务并释放DAG任务所占的计算资源;
步骤9:若需在已有结果的基础上继续优化叶片设计,则重新执行步骤7-8;
步骤10:若需更改计算工作流到无循环DAG的转换方法,则重新执行步骤5-8;
步骤11:若需调整柔性叶片优化设计的业务工作流结构或相关任务的执行参数,则重新执行步骤1-8。
所述步骤1中,设计柔性叶片优化设计的整体工作流程,并将工作流程表达为支持柔性叶片设计的业务工作流,业务工作流中的任务包括:生成敏度计算文件、敏度分析、敏度排序、生成种群文件、多目标优化和遗传算法,其中多目标优化的目标包括载荷、重量和能量成功率;将敏度分析和多目标优化定义为并行任务,内循环包括生成种群文件、多目标优化和遗传算法,而外循环包括整个业务工作流。
所述步骤2中,通过可扩展标记语言XML对业务工作流进行描述,XML定义的工作流的层次说明如下:
(1)node定义业务工作流内的一个具体任务,其具体属性包括id、mode和os;id为node的编号和唯一标识符,os指定执行机器的操作系统,用于底层调度系统识别;mode指定任务的执行模式,可取值为local和cluster,其中local为在本地处理的预处理任务或串行任务,cluster指提交到集群处理的并行任务;
(2)stage由一个或多个node组成,且可包含循环,stage还可以嵌套stage实现更复杂的工作流结构;stage的pre和post属性表示stage间的前后连接和输入输出;
(3)workflow定义完整的工作流,所有属于该工作流的语句都需要定义在workflow域内,workflow由一个或多个stage组成,且可包含前/后处理、数据依赖和循环。
所述步骤4中,通过引入新的工作流节点,即CHECK节点,将带有循环终止条件的计算工作流自动转化为标准的循环工作流,引入CHECK节点后,工作流中所有循环节点前都增加该节点以检查循环终止条件,此外,条件循环转换为预指定的最高迭代次数,从而将计算工作流转换为有限且循环次数已知的循环工作流并避免出现死循环;实现CHECK节点的功能的具体方法如下:
(1)每个循环节点对应的CHECK节点会转换为预处理节点,并产生一条对应该预处理节点的PRE_SKIP描述语句;预处理节点读取并解析终止条件判断语句,并根据判断结果返回特定的值来表示是否满足终止条件,其中返回值为1则判断为满足终止条件,返回值为0则判断为不满足终止条件;
(2)触发PRE_SKIP描述语句后,跳过预处理节点相对应的循环节点;当满足循环终止条件即达到已知有限的循环次数时,跳过剩余循环中的所有节点,从而自动终止循环并处理循环外的下一个计算节点。
所述步骤5中,将计算工作流转换为复杂工作流引擎所支持的有向无环图DAG,其中转换方法分别如下:
(1)循环展开采用自底向上的方法,该方法首先构造循环树,再根据父节点的循环迭代和工作流程依赖性将叶子内联到其父节点,重复上述过程直到展开所有循环,循环展开的流程具体如下:
(1-1)构建循环树描述工作流中的循环信息,该循环信息以树的形式进行组织,其中根为整个工作流,其他不包括叶节点的每个节点表示循环,叶节点表示工作流中的实际任务,每个节点的子节点代表的循环嵌套在该节点代表的循环中,通过按层捕获并描述节点间的依赖关系,循环树表示了工作流中复杂的嵌套循环结构;
(1-2)将节点内联应用于其子节点均为叶节点的节点,节点内联即根据工作流中的依赖关系加入属于同一父节点的叶节点,将具有相同父节点的叶节点连接在一起后,再根据迭代次数展开循环,并将父节点替换为展开的叶节点;
(1-3)重复执行(1-2)阶段以降低循环树的深度,直到整个循环树仅具有一个节点,该节点包含整个DAG且其内部不存在循环。
(2)递归展开采用自顶向下的方法,其中DAG在原始循环工作流的不同层上生成;该方法首先构造循环树,再迭代地将根节点下面的节点连接到DAG中;如果根的子节点是子树,重复第二阶段,直到所有节点都包含在DAG中,递归展开的具体流程如下:
(2-1)该阶段与循环展开相同,即构建循环树描述工作流中的循环信息;
(2-2)将循环树中的每个节点看作一个嵌套循环,该循环可能具有代表其他循环的子节点;每当加入子节点,将工作流中父节点和该子节点之间的依赖表示为子DAG之间的连接;当所有子节点加入DAG时,将该DAG复制为工作流指定的循环迭代;
(2-3)重复执行(2-2)阶段直到生成带有所有抽象为子DAG的子树的总DAG,最终将原始循环工作流表示为基于循环树的递归DAG。
所述步骤6中,通过自动转化工具将无循环DAG转化为可执行的工作流DAG描述文件和作业描述文件,其中HTCondor DAGMan模块作为目标工作流引擎;自动生成的DAG描述文件中的属性具体如下:
(1)job定义为“job jobname path/to/file.sub”,即file.sub文件中定义了命名为jobname的作业,其与XML语言中的node属性相匹配。
(2)script定义为“script pre/post path/to/script args”,其表示一个带有可执行文件和相应参数的前/后处理脚本,该脚本对应XML语言中的pre/post属性。
(3)parent/child定义为“parent jobname1 child jobname2”,根据依赖关系jobname2必须在jobname1之后执行。
(4)subdag定义为“subdag external dagname”,其中external关键字通知目标工作流引擎该DAG包含命名为dagname的sub-DAG。
所述步骤6中,可执行的工作流DAG描述文件和作业描述文件分别定义工作流DAG和DAG中的实际任务,其中不同的循环消除方法对应不同的DAG生成的实现方式,具体说明如下:
(1)对于循环展开方法,首先为XML源文件中的每个node块生成作业描述文件。然后,对于每个stage块,根据parent/child阶段的定义生成DAG描述文件。jobname属性的命名遵循“node_<id>_<iter1>_<iter2>...”的格式,工作流引擎通过该命名格式识别循环展开后每个节点所处的阶段和迭代。此外,XML源文件中指定的pre/post脚本通过scriptpre/post属性添加到DAG描述文件中。
(2)与循环展开方法不同,递归展开方法会生成不止一个DAG描述文件。每个stage块会生成两个DAG描述文件,其中一个DAG描述文件包含该stage块内的所有节点和依赖拓扑,而另一个DAG描述文件作为该stage块的父阶段或工作流的引用接口,并通过逐一连接stage块表示循环。工作流引擎通过subdag接口实现了对DAG描述文件的引用,subdag的命名格式与循环展开方法中的jobname属性一致。
所述步骤7中,工作流引擎自动调度相关任务到底层计算平台上执行,该引擎对底层计算节点进行执行器抽象以降低底层系统差异带来的复杂度,提交机器将所有输入文件打包并发送给分配的计算节点,计算节点接收到后进行解包操作,然后调用运行时执行器选取对应平台的执行脚本进行计算,其中Windows系统和Linux系统分别选择bat执行脚本和shell执行脚本。
所述步骤8中,工作流引擎将叶片优化设计的结果文件从计算平台返回到提交机器上,其中计算节点上的计算执行结束后,计算节点将计算结果打包并发送回提交机器;提交机器接收到结果文件后进行解包操作,从而得到最终的计算结果。
有益效果:
本发明充分优化了柔性叶片优化设计的整体工作流程,并将工作流程通过循环展开或嵌套展开的方法转换为具有复杂依赖的无循环DAG。此外,通过解析XML语言表示的无循环DAG,本发明自动生成复杂工作流引擎支持的DAG描述文件;复杂工作流引擎将DAG相关任务调度到底层并行计算平台实现柔性叶片设计的迭代优化。本发明可适用于柔性叶片优化工作流在任意异构集群下的高效调度和执行。
附图说明
图1是实现本发明提出方法的设计概要;
图2是本发明提出的柔性叶片优化设计的结构优化工作流;
图3是本发明提出的消除循环终止条件判断的工作流示意图;
图4是本发明提出的循环展开方法和递归展开方法的比较示意图;
图5是本发明提出的生成DAG作业描述文件的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的设计概要如图1所示,本发明的整体结构设计包括顶层的Python接口与XML接口,XML解析器,循环树表达,循环展开/嵌套展开方法,DAG描述文件生成器和复杂工作流引擎。此外,本发明设计了HTCondor运行时对任务执行进行抽象以实现更好的跨平台特性。
如图1所示:本发明具体实施步骤如下:
步骤1:设计柔性叶片优化设计的整体工作流程,并将工作流程表达为支持柔性叶片优化设计的业务工作流,包括将整体工作流程拆分为并行或串行处理的任务、确定任务的输入和输出、判断内外循环的位置和终止条件,最终生成支持叶片优化设计的业务工作流。具体如下:
如图2所示,结构优化工作流中的任务包括生成敏度计算文件、敏度分析、敏度排序、生成种群文件、多目标优化和遗传算法,其中多目标优化的目标包括载荷、重量和能量成功率;将敏度分析和多目标优化定义为并行任务,内循环包括生成种群文件、多目标优化和遗传算法,而外循环包括整个业务工作流。
步骤2:通过可扩展标记语言将业务工作流描述为树形结构的XML源文件,其中XML树对柔性叶片优化设计进行配置和管理,XML定义的工作流层次说明如表1所示。
表1是XML定义的工作流层次说明;
步骤3:通过XML解析器解析XML源文件中定义的描述语句,该解析器将XML树转换为具有循环嵌套关系的计算工作流。
步骤4:通过引入新的工作流节点将带有循环终止条件的计算工作流自动转化为标准的循环工作流,该新的工作流节点支持对循环终止条件进行运行时的判断,并在达到终止条件时跳过其管理的计算节点和相应的后处理进程;如图3所示,引入CHECK节点后,工作流中所有循环节点前都增加该节点以检查循环终止条件,此外,条件循环转换为预指定的最高迭代次数,从而将计算工作流转换为有限且循环次数已知的循环工作流并避免出现死循环。实现CHECK节点的功能的具体方法如下:
(1)每个循环节点对应的CHECK节点会转换为预处理节点,并产生一条对应该预处理节点的PRE_SKIP描述语句;预处理节点读取并解析终止条件判断语句,并根据判断结果返回特定的值来表示是否满足终止条件,其中返回值为1则判断为满足终止条件,返回值为0则判断为不满足终止条件。
(2)触发PRE_SKIP描述语句后,跳过预处理节点相对应的循环节点;当满足循环终止条件即达到已知有限的循环次数时,跳过剩余循环中的所有节点,从而自动终止循环并处理循环外的下一个计算节点。
步骤5:通过循环展开或嵌套展开的方法将计算工作流转换为复杂工作流引擎所支持的有向无环图DAG,无循环的有向无环图DAG描述了叶片优化设计流程中的任务间的复杂计算依赖性;如图4所示,两种展开方法分别如下:
(1)循环展开采用自底向上的方法,该方法首先构造循环树,再根据父节点的循环迭代和工作流程依赖性将叶子内联到其父节点,重复上述过程直到展开所有循环,循环展开的流程具体如下。
(1-1)构建循环树描述工作流中的循环信息,该循环信息以树的形式进行组织,其中根为整个工作流,其他不包括叶节点的每个节点表示循环,叶节点表示工作流中的实际任务,每个节点的子节点代表的循环嵌套在该节点代表的循环中,通过按层捕获并描述节点间的依赖关系,循环树表示了工作流中复杂的嵌套循环结构。
(1-2)将节点内联应用于其子节点均为叶节点的节点,节点内联即根据工作流中的依赖关系加入属于同一父节点的叶节点,将具有相同父节点的叶节点连接在一起后,再根据迭代次数展开循环,并将父节点替换为展开的叶节点。
(1-3)重复执行(1-2)阶段以降低循环树的深度,直到整个循环树仅具有一个节点,该节点包含整个DAG且其内部不存在循环。
(2)递归展开采用自顶向下的方法,其中DAG在原始循环工作流的不同层上生成;该方法首先构造循环树,再迭代地将根节点下面的节点连接到DAG中;如果根的子节点是子树,重复第二阶段,直到所有节点都包含在DAG中,递归展开的具体流程如下:
(2-1)该阶段与循环展开相同,即构建循环树描述工作流中的循环信息。
(2-2)将循环树中的每个节点看作一个嵌套循环,该循环可能具有代表其他循环的子节点;每当加入子节点,将工作流中父节点和该子节点之间的依赖表示为子DAG之间的连接;当所有子节点加入DAG时,将该DAG复制为工作流指定的循环迭代。
(2-3)重复执行(2-2)阶段直到生成带有所有抽象为子DAG的子树的总DAG,最终将原始循环工作流表示为基于循环树的递归DAG。
步骤6:通过自动转化工具将无循环有向无环图DAG转化为可执行的工作流DAG描述文件和作业描述文件,其分别定义工作流DAG和DAG中的实际任务,其中DAG描述文件中的属性说明如表2所示,作业描述文件的示例如图5所示。
表2是DAG描述文件中的属性说明;
另外,不同的循环消除方法对应不同的DAG生成的实现方式,具体说明如下:
(1)对于循环展开方法,首先为XML源文件中的每个node块生成作业描述文件。然后,对于每个stage块,根据parent/child阶段的定义生成DAG描述文件。jobname属性的命名遵循“node_<id>_<iter1>_<iter2>...”的格式,工作流引擎通过该命名格式识别循环展开后每个节点所处的阶段和迭代。此外,XML源文件中指定的pre/post脚本通过scriptpre/post属性添加到DAG描述文件中。
(2)与循环展开方法不同,递归展开方法会生成不止一个DAG描述文件。每个stage块会生成两个DAG描述文件,其中一个DAG描述文件包含该stage块内的所有节点和依赖拓扑,而另一个DAG描述文件作为该stage块的父阶段或工作流的引用接口,并通过逐一连接stage块表示循环。工作流引擎通过subdag接口实现了对DAG描述文件的引用,subdag的命名格式与循环展开方法中的jobname属性一致。
步骤7:将DAG描述文件和作业描述文件提交到高通量调度系统,高通量调度系统中的DAGMan模块自动调度工作流中的相关任务到底层计算平台上执行,该引擎对底层计算节点进行执行器抽象以降低底层系统差异带来的复杂度。提交机器将所有输入文件打包并发送给分配的计算节点,计算节点接收到后进行解包操作,然后调用运行时执行器选取对应平台的执行脚本进行计算,其中Windows系统和Linux系统分别选择bat执行脚本和shell执行脚本。
步骤8:工作流执行结束后,DAGMan模块将叶片优化设计的结果文件从计算平台返回到提交机器上,再终止DAG任务并释放DAG任务所占的计算资源;提交机器接收到结果文件后进行解包操作,从而得到最终的计算结果。
步骤9:若需在已有结果的基础上继续优化叶片设计,则重新执行步骤7-8。
步骤10:若需更改计算工作流到无循环DAG的转换方法,则重新执行步骤5-8。
步骤11:若需调整柔性叶片优化设计的业务工作流结构或相关任务的执行参数,则重新执行步骤1-8。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (9)
1.一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于,包括以下步骤:
步骤1:设计柔性叶片优化设计的整体工作流程,并将工作流程表达为支持柔性叶片优化设计的业务工作流,包括将整体工作流程拆分为并行或串行处理的任务、确定任务的输入和输出、判断内外循环的位置和终止条件,最终生成支持叶片优化设计的业务工作流;
步骤2:通过可扩展标记语言将业务工作流描述为树形结构的XML源文件,其中XML树对柔性叶片优化设计进行配置和管理;
步骤3:通过XML解析器解析XML源文件中定义的描述语句,该解析器将XML树转换为具有循环嵌套关系的计算工作流;
步骤4:通过引入新的工作流节点将带有循环终止条件的计算工作流自动转化为标准的循环工作流,该新的工作流节点支持对循环终止条件进行运行时的判断,并在达到终止条件时跳过其管理的计算节点和相应的后处理进程;
步骤5:通过循环展开或嵌套展开的方法将计算工作流转换为复杂工作流引擎所支持的有向无环图DAG,无循环的有向无环图DAG描述了叶片优化设计流程中的任务间的复杂计算依赖性;
步骤6:通过自动转化工具将无循环有向无环图DAG转化为可执行的工作流DAG描述文件和作业描述文件,其分别定义工作流DAG和DAG中的实际任务;
步骤7:将DAG描述文件和作业描述文件提交到高通量调度系统,高通量调度系统中的DAGMan模块自动调度工作流中的相关任务到底层计算平台上执行;
步骤8:工作流执行结束后,DAGMan模块将叶片优化设计的结果文件从计算平台返回到提交机器上,再终止DAG任务并释放DAG任务所占的计算资源;
步骤9:若需在已有结果的基础上继续优化叶片设计,则重新执行步骤7-8;
步骤10:若需更改计算工作流到无循环DAG的转换方法,则重新执行步骤5-8;
步骤11:若需调整柔性叶片优化设计的业务工作流结构或相关任务的执行参数,则重新执行步骤1-8。
2.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤1中,设计柔性叶片优化设计的整体工作流程,并将工作流程表达为支持柔性叶片设计的业务工作流,业务工作流中的任务包括:生成敏度计算文件、敏度分析、敏度排序、生成种群文件、多目标优化和遗传算法,其中多目标优化的目标包括载荷、重量和能量成功率;将敏度分析和多目标优化定义为并行任务,内循环包括生成种群文件、多目标优化和遗传算法,而外循环包括整个业务工作流。
3.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤2中,通过可扩展标记语言XML对业务工作流进行描述,XML定义的工作流的层次说明如下:
(1)node定义业务工作流内的一个具体任务,其具体属性包括id、mode和os;id为node的编号和唯一标识符,os指定执行机器的操作系统,用于底层调度系统识别;mode指定任务的执行模式,可取值为local和cluster,其中local为在本地处理的预处理任务或串行任务,cluster指提交到集群处理的并行任务;
(2)stage由一个或多个node组成,且可包含循环,stage还可以嵌套stage实现更复杂的工作流结构;stage的pre和post属性表示stage间的前后连接和输入输出;
(3)workflow定义完整的工作流,所有属于该工作流的语句都需要定义在workflow域内,workflow由一个或多个stage组成,且可包含前/后处理、数据依赖和循环。
4.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤4中,通过引入新的工作流节点,即CHECK节点,将带有循环终止条件的计算工作流自动转化为标准的循环工作流,引入CHECK节点后,工作流中所有循环节点前都增加该节点以检查循环终止条件,此外,条件循环转换为预指定的最高迭代次数,从而将计算工作流转换为有限且循环次数已知的循环工作流并避免出现死循环;实现CHECK节点的功能的具体方法如下:
(1)每个循环节点对应的CHECK节点会转换为预处理节点,并产生一条对应该预处理节点的PRE_SKIP描述语句;预处理节点读取并解析终止条件判断语句,并根据判断结果返回特定的值来表示是否满足终止条件,其中返回值为1则判断为满足终止条件,返回值为0则判断为不满足终止条件;
(2)触发PRE_SKIP描述语句后,跳过预处理节点相对应的循环节点;当满足循环终止条件即达到已知有限的循环次数时,跳过剩余循环中的所有节点,从而自动终止循环并处理循环外的下一个计算节点。
5.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤5中,将计算工作流转换为复杂工作流引擎所支持的有向无环图DAG,其中转换方法分别如下:
(1)循环展开采用自底向上的方法,该方法首先构造循环树,再根据父节点的循环迭代和工作流程依赖性将叶子内联到其父节点,重复上述过程直到展开所有循环,循环展开的流程具体如下:
(1-1)构建循环树描述工作流中的循环信息,该循环信息以树的形式进行组织,其中根为整个工作流,其他不包括叶节点的每个节点表示循环,叶节点表示工作流中的实际任务,每个节点的子节点代表的循环嵌套在该节点代表的循环中,通过按层捕获并描述节点间的依赖关系,循环树表示了工作流中复杂的嵌套循环结构;
(1-2)将节点内联应用于其子节点均为叶节点的节点,节点内联即根据工作流中的依赖关系加入属于同一父节点的叶节点,将具有相同父节点的叶节点连接在一起后,再根据迭代次数展开循环,并将父节点替换为展开的叶节点;
(1-3)重复执行(1-2)阶段以降低循环树的深度,直到整个循环树仅具有一个节点,该节点包含整个DAG且其内部不存在循环;
(2)递归展开采用自顶向下的方法,其中DAG在原始循环工作流的不同层上生成;该方法首先构造循环树,再迭代地将根节点下面的节点连接到DAG中;如果根的子节点是子树,重复第二阶段,直到所有节点都包含在DAG中,递归展开的具体流程如下:
(2-1)该阶段与循环展开相同,即构建循环树描述工作流中的循环信息;
(2-2)将循环树中的每个节点看作一个嵌套循环,该循环可能具有代表其他循环的子节点;每当加入子节点,将工作流中父节点和该子节点之间的依赖表示为子DAG之间的连接;当所有子节点加入DAG时,将该DAG复制为工作流指定的循环迭代;
(2-3)重复执行(2-2)阶段直到生成带有所有抽象为子DAG的子树的总DAG,最终将原始循环工作流表示为基于循环树的递归DAG。
6.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤6中,通过自动转化工具将无循环DAG转化为可执行的工作流DAG描述文件和作业描述文件,其中HTCondor DAGMan模块作为目标工作流引擎;自动生成的DAG描述文件中的属性具体如下:
(1)job定义为“job jobname path/to/file.sub”,即file.sub文件中定义了命名为jobname的作业,其与XML语言中的node属性相匹配;
(2)script定义为“script pre/post path/to/script args”,其表示一个带有可执行文件和相应参数的前/后处理脚本,该脚本对应XML语言中的pre/post属性;
(3)parent/child定义为“parent jobname1 child jobname2”,根据依赖关系jobname2必须在jobname1之后执行;
(4)subdag定义为“subdag external dagname”,其中external关键字通知目标工作流引擎该DAG包含命名为dagname的sub-DAG。
7.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤6中,可执行的工作流DAG描述文件和作业描述文件分别定义工作流DAG和DAG中的实际任务,其中不同的循环消除方法对应不同的DAG生成的实现方式,具体说明如下:
(1)对于循环展开方法,首先为XML源文件中的每个node块生成作业描述文件;然后,对于每个stage块,根据parent/child阶段的定义生成DAG描述文件;jobname属性的命名遵循“node_<id>_<iter1>_<iter2>...”的格式,工作流引擎通过该命名格式识别循环展开后每个节点所处的阶段和迭代;此外,XML源文件中指定的pre/post脚本通过script pre/post属性添加到DAG描述文件中;
(2)与循环展开方法不同,递归展开方法会生成不止一个DAG描述文件;每个stage块会生成两个DAG描述文件,其中一个DAG描述文件包含该stage块内的所有节点和依赖拓扑,而另一个DAG描述文件作为该stage块的父阶段或工作流的引用接口,并通过逐一连接stage块表示循环;工作流引擎通过subdag接口实现了对DAG描述文件的引用,subdag的命名格式与循环展开方法中的jobname属性一致。
8.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤7中,工作流引擎自动调度相关任务到底层计算平台上执行,该引擎对底层计算节点进行执行器抽象以降低底层系统差异带来的复杂度,提交机器将所有输入文件打包并发送给分配的计算节点,计算节点接收到后进行解包操作,然后调用运行时执行器选取对应平台的执行脚本进行计算,其中Windows系统和Linux系统分别选择bat执行脚本和shell执行脚本。
9.根据权利要求1所述的一种满足大型柔性叶片优化设计的复杂工作流引擎方法,其特征在于:所述步骤8中,工作流引擎将叶片优化设计的结果文件从计算平台返回到提交机器上,其中计算节点上的计算执行结束后,计算节点将计算结果打包并发送回提交机器;提交机器接收到结果文件后进行解包操作,从而得到最终的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210233156.9A CN114595580B (zh) | 2022-03-09 | 2022-03-09 | 一种满足大型柔性叶片优化设计的复杂工作流引擎方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210233156.9A CN114595580B (zh) | 2022-03-09 | 2022-03-09 | 一种满足大型柔性叶片优化设计的复杂工作流引擎方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114595580A CN114595580A (zh) | 2022-06-07 |
CN114595580B true CN114595580B (zh) | 2024-05-28 |
Family
ID=81809536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210233156.9A Active CN114595580B (zh) | 2022-03-09 | 2022-03-09 | 一种满足大型柔性叶片优化设计的复杂工作流引擎方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595580B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115903691A (zh) * | 2022-11-04 | 2023-04-04 | 北京镁伽机器人科技有限公司 | 试验流程解析方法、装置、电子设备及存储介质 |
CN116645068B (zh) * | 2023-07-21 | 2023-10-20 | 三峡高科信息技术有限责任公司 | 一种支持条件循环节点的流程处理系统及方法 |
CN117610320B (zh) * | 2024-01-23 | 2024-04-02 | 中国人民解放军国防科技大学 | 有向无环图工作流引擎循环调度方法、装置和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761111A (zh) * | 2014-02-19 | 2014-04-30 | 中国科学院软件研究所 | 一种基于bpel语言构建数据密集型工作流引擎的方法及其系统 |
CN110737485A (zh) * | 2019-09-29 | 2020-01-31 | 武汉海昌信息技术有限公司 | 一种基于云架构的工作流配置系统和方法 |
CN110825511A (zh) * | 2019-11-07 | 2020-02-21 | 北京集奥聚合科技有限公司 | 一种基于建模平台模型运行流程调度方法 |
CN111597143A (zh) * | 2020-03-24 | 2020-08-28 | 中电海康集团有限公司 | 一种将dag图数据转换为工作流引擎调度文件的方法 |
CN113886111A (zh) * | 2021-10-15 | 2022-01-04 | 中国科学院信息工程研究所 | 一种基于工作流的数据分析模型计算引擎系统及运行方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7168077B2 (en) * | 2003-01-31 | 2007-01-23 | Handysoft Corporation | System and method of executing and controlling workflow processes |
WO2006081428A2 (en) * | 2005-01-27 | 2006-08-03 | Symyx Technologies, Inc. | Parser for generating structure data |
US10564949B2 (en) * | 2013-09-20 | 2020-02-18 | Reservoir Labs, Inc. | System and method for generation of event driven, tuple-space based programs |
-
2022
- 2022-03-09 CN CN202210233156.9A patent/CN114595580B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761111A (zh) * | 2014-02-19 | 2014-04-30 | 中国科学院软件研究所 | 一种基于bpel语言构建数据密集型工作流引擎的方法及其系统 |
CN110737485A (zh) * | 2019-09-29 | 2020-01-31 | 武汉海昌信息技术有限公司 | 一种基于云架构的工作流配置系统和方法 |
CN110825511A (zh) * | 2019-11-07 | 2020-02-21 | 北京集奥聚合科技有限公司 | 一种基于建模平台模型运行流程调度方法 |
CN111597143A (zh) * | 2020-03-24 | 2020-08-28 | 中电海康集团有限公司 | 一种将dag图数据转换为工作流引擎调度文件的方法 |
CN113886111A (zh) * | 2021-10-15 | 2022-01-04 | 中国科学院信息工程研究所 | 一种基于工作流的数据分析模型计算引擎系统及运行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114595580A (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114595580B (zh) | 一种满足大型柔性叶片优化设计的复杂工作流引擎方法 | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN113031966B (zh) | 一种智能选择编译加速库的深度学习编译优化方法 | |
Liu et al. | Automatic replanning of task networks for process model evolution in EPOS | |
CN101373432B (zh) | 一种基于中间件的组件系统性能预测方法和系统 | |
CN111104124B (zh) | 基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法 | |
US20230334292A1 (en) | Node fusion method for computational graph and device | |
CN112379884A (zh) | 基于Spark和并行内存计算的流程引擎实现方法及系统 | |
CN109791492A (zh) | 流水线相关树查询优化器和调度器 | |
CN111813814A (zh) | 一种支持多种机器学习框架的通用模型管理方法和装置 | |
Puttonen et al. | Planning-based semantic web service composition in factory automation | |
CN110516000B (zh) | 一种支持复杂工作流结构的工作流管理系统 | |
CN114186678B (zh) | 基于深度学习的硬件适配装置和方法 | |
CN110109658B (zh) | 一种基于形式化模型的ros代码生成器及代码生成方法 | |
CN112558977B (zh) | 面向异构众核后端基于代价模型的多面体优化方法 | |
CN102253837A (zh) | 基于对象树的软件框架设计技术 | |
CN112839109B (zh) | 一种基于云函数和bpmn规范的云资源编排方法 | |
WO2008041442A1 (fr) | Procédé de création de programme par parallélisation, dispositif de création de programme par parallélisation, et programme de création de programme par parallélisation | |
Di Martino et al. | Parallel program analysis and restructuring by detection of point-to-point interaction patterns and their transformation into collective communication constructs | |
Gueddoudj et al. | Towards a scalable and efficient etl | |
CN112825031B (zh) | 基于json格式的流程描述方法及装置 | |
Jiang et al. | A task parallelism runtime solution for deep learning applications using MPSoC on edge devices | |
CN116755782B (zh) | 一种指令调度的方法、装置、设备、存储介质及程序产品 | |
Tamizharasi | Bio Inspired Approach for Generating Test data from User Stories | |
CN113590129B (zh) | 一种基于同步反应式构件的代码自动生成方法 |
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 |