CN116775039A - 一种运算脚本的优化方法、***及存储介质 - Google Patents
一种运算脚本的优化方法、***及存储介质 Download PDFInfo
- Publication number
- CN116775039A CN116775039A CN202310791370.0A CN202310791370A CN116775039A CN 116775039 A CN116775039 A CN 116775039A CN 202310791370 A CN202310791370 A CN 202310791370A CN 116775039 A CN116775039 A CN 116775039A
- Authority
- CN
- China
- Prior art keywords
- execution
- branch
- stage
- branches
- operation script
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000005457 optimization Methods 0.000 title claims abstract description 62
- 238000013461 design Methods 0.000 claims abstract description 21
- 238000010276 construction Methods 0.000 claims abstract description 17
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008707 rearrangement Effects 0.000 claims description 6
- 238000010845 search algorithm Methods 0.000 claims description 3
- 238000001259 photo etching Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000001459 lithography Methods 0.000 description 4
- 125000002015 acyclic group Chemical group 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000009960 carding Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及光刻技术领域,特别涉及一种运算脚本的优化方法、***及存储介质,本发明的运算脚本的优化方法包括以下步骤:提供一运算脚本,获取该运算脚本的所有初始命令并对初始命令进行全局扫描,基于预设构建方式构建运算脚本的有向无环图;基于该图以预设排列方式重排初始命令,获得至少一个执行分支及该分支中的阶段分支;获取设计文本并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留;若不需要输入则判定为无意义并删除;重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有分支的执行结果均有意义时,以预设合并方式合并阶段分支并作为优化运算脚本输出。提升脚本的运算效率。
Description
【技术领域】
本发明涉及光刻技术领域,特别涉及一种运算脚本的优化方法、***及存储介质。
【背景技术】
随着半导体技术的不断发展,特征尺寸的不断减小,计算光刻在工艺制程中的作用也越发显著。计算光刻需要对全芯片图形进行掩模优化,同时也需要根据工艺能力对不同的目标图像进行工艺误差补偿,这两者的运算量都是非常大的。为保证运算效率,从运算流程方面入手,人们提出并采用了多线程分布式的并行运算方法。
由于先进节点的晶体管集成度越来越高,单位面积内的图形越来越密集,单元的组合方式也越来越复杂,在不考虑硬件条件限制的前提下,计算光刻所需的运算时间会逐渐变长。如何进一步提高运算效率,成了众多从业者的一个关注问题。对于这样的一个问题,目前较为主流的解决方案有:通过优化算法以提升运算效率、通过硬件升级以提升运算效率、通过优化分布式流程以提升运算效率等。现有技术虽然从版图层面优化了多线程分布式的运算效率,但并未涉及从命令层面的相关优化方案。
【发明内容】
为提升脚本运算效率,本发明提供了一种运算脚本的优化方法、***及存储介质。
本发明解决技术问题的方案是提供一种运算脚本的优化方法,包括以下步骤:提供一运算脚本,获取该运算脚本的所有初始命令并对所述初始命令进行全局扫描,基于预设构建方式构建所述运算脚本的有向无环图;基于所述有向无环图,以预设排列方式将所述初始命令重排,获得至少一个执行分支及所述执行分支中的阶段分支;获取设计文本,并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留对应的执行分支和/或阶段分支;若不需要输入则判定为无意义,并删除该执行分支和/或阶段分支;重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有执行分支及阶段分支的执行结果均有意义时,以预设合并方式合并阶段分支,获取结果作为优化运算脚本输出。
优选地,所述预设构建方式包括基于每条初始命令的输入输出并结合广度优先搜索算法进行构建。
优选地,执行分支被判定为无意义时,该执行分支中的阶段分支均判定为无意义。
优选地,将初始命令相互之间的关系定义为有关联性或无关联性,重排时所述无关联性的初始命令并列排列,所述有关联性的初始命令有向排列。
优选地,以预设排列方式重排初始命令包括如下步骤:基于无关联性的初始命令,生成对应数量的执行分支;基于有关联性的初始命令,依据关联性生成一个执行分支及该执行分支中的阶段分支。
优选地,以预设合并方式合并阶段分支包括如下步骤:判断不同执行分支中的阶段分支是否具有关联性,若具有关联性,则判定为可合并项并合并;若无关联性,则判定为不可合并项。
优选地,获取优化运算脚本并输出之后还包括对优化运算脚本验算过程,具体包括如下步骤:基于优化运算脚本的阶段分支顺序,将原命令执行顺序更改对应阶段执行顺序;以预设运算方式执行更改后的阶段执行顺序命令。
优选地,所述预设运算方式为多线程分布式运算。
本发明为解决上述技术问题还提供一种运算脚本的优化***,用于实现如上所述的运算脚本的优化方法,包括信息获取模块:用于获取运算脚本的所有初始命令,重排后的执行分支,阶段分支以及优化运算脚本;运算模块:运算预设构建方式,预设排列方式及预设合并方式的逻辑关系,及对执行分支和/或阶段分支的执行结果的判断步骤;重排重构模块:用于基于预设构建方式构建有向无环图,以预设排列方式将所述初始命令重排。
本发明为解决上述技术问题还提供一种存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的运算脚本的优化方法。
与现有技术相比,本发明的一种运算脚本的优化方法、***及存储介质具有以下优点:
1、本发明的一种运算脚本的优化方法,包括以下步骤:提供一运算脚本,获取该运算脚本的所有初始命令并对所述初始命令进行全局扫描,基于预设构建方式构建所述运算脚本的有向无环图;基于所述有向无环图,以预设排列方式将所述初始命令重排,获得至少一个执行分支及所述执行分支中的阶段分支;获取设计文本,并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留对应的执行分支和/或阶段分支;若不需要输入则判定为无意义,并删除该执行分支和/或阶段分支;重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有执行分支及阶段分支的执行结果均有意义时,以预设合并方式合并阶段分支,获取结果作为优化运算脚本输出。
2、本发明的运算脚本的优化方法,执行分支被判定为无意义时,该执行分支中的阶段分支均判定为无意义。通过该设计,在脚本运行初就能初步筛选出无需进行运算的初始命令,无论是在运算或验算过程中均能提升效率。
3、本发明的运算脚本的优化方法,以预设排列方式重排初始命令包括如下步骤:基于无关联性的初始命令,生成对应数量的执行分支;基于有关联性的初始命令,依据关联性生成一个执行分支及该执行分支中的阶段分支。基于是否有关联性初步排列出初始命令的执行分支,也即运算层级,并将有关联性的初始命令依次有向排列,形成有向无环图,进而降低运算量,提高运算效率。
4、本发明的运算脚本的优化方法,以预设合并方式合并阶段分支包括如下步骤:判断不同执行分支中的阶段分支是否具有关联性,若具有关联性,则判定为可合并项并合并;若无关联性,则判定为不可合并项。通过将不同执行分支中相互间有关联性的阶段分支进行合并,能进一步降低运算量,且同时能筛选出无关联性的阶段分支,从而防止其参与运算,进而提升运算效率。
5、本发明还提供一种运算脚本的优化***,用于实现如上所述的运算脚本的优化方法,包括信息获取模块:用于获取运算脚本的所有初始命令,重排后的执行分支,阶段分支以及优化运算脚本;运算模块:运算预设构建方式,预设排列方式及预设合并方式的逻辑关系,及对执行分支和/或阶段分支的执行结果的判断步骤;重排重构模块:用于基于预设构建方式构建有向无环图,以预设排列方式将所述初始命令重排。运算脚本的优化***具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
6、本发明还提供一种存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时,实现如上所述的运算脚本的优化方法,具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种运算脚本的优化方法的步骤流程图。
图2是本发明第一实施例提供的一种运算脚本的优化方法之步骤S2的步骤流程图。
图3是本发明第一实施例提供的一种运算脚本的优化方法之步骤S4的步骤流程图一。
图4是本发明第一实施例提供的一种运算脚本的优化方法的示例图。
图5是本发明第一实施例提供的一种运算脚本的优化方法之步骤S4的步骤流程图二。
图6是本发明第二实施例提供的一种运算脚本的优化***的示例图。
图7是本发明第三实施例提供的一种存储介质的示例图。
附图标识说明:
1、运算脚本的优化***;2、存储介质;
11、信息获取模块;12、运算模块;13、重排重构模块;21、存储器;22、处理器;23、计算机程序。
【具体实施方式】
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图及实施实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明需要用到有向无环图(DAG)的拓扑排序,具体的,有向无环图的拓扑排序是一种将所有顶点排成线性序列的算法,使得对于任何一对顶点u和v,若存在一条从u到v的路径,那么在这个序列中,u出现在v的前面,算法步骤如下:
选取一个入度为0的顶点,并将它放入输出序列中;
将所有从该顶点出发的边删除,即将他们指向的顶点的入度减1;
重复执行步骤1和2直到所有的顶点都被放入输出序列中。
具体的,入度为0指有向图中的点不作为任何边的终点,也就是说,这一点所连接的边都把这一点作为起点。
此外,如果存在环路,则不能进行拓扑排序,因为在环路中的顶点之间不存在任何的优先关系。
请参阅图1,本发明第一实施例提供一种运算脚本的优化方法,包括以下步骤:
S1:提供一运算脚本,获取该运算脚本的所有初始命令并对初始命令进行全局扫描,基于预设构建方式构建运算脚本的有向无环图;
S2:基于有向无环图,以预设排列方式将初始命令重排,获得至少一个执行分支及执行分支中的阶段分支;
S31:获取设计文本,并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留对应的执行分支和/或阶段分支;
S32:若不需要输入则判定为无意义,并删除该执行分支和/或阶段分支;
S4:重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有执行分支及阶段分支的执行结果均有意义时,以预设合并方式合并阶段分支,获取结果作为优化运算脚本输出。
需要说明的是,从运算脚本更新迭代的角度出发,最初版本的运算脚本中,或许初始命令之间都是存在关联的。但是在经过多次更新迭代后的脚本,初始命令间的关联性可能已经被破坏了。而一个成熟的计算光刻脚本,初始命令量是数以千计的,靠用户层面来实现这部分功能不太现实,因此会考虑从***层面解决。
具体的,在本发明具体实施例中,获取的设计文本为空的载体,使用者可根据需求对初始命令进行筛选并输入至设计文本中;优化运算脚本为完成筛选步骤获取的包括有意义的初始命令的设计文本,作为一个整体进行输出。
此外,这里的有向无环图并不一定需要得出一个实际的图像,可以是根据初始命令相互间关系按照逻辑关系进行排列的流程信息,也不一定是采用拓扑排序,只要能实现对散乱的初始命令有序排列的方法即可,这里不做限定;具体的,本发明具体实施例是借助有向无环图的算法逻辑对运算脚本中的初始命令进行有向无环的拓扑排序,方向朝向也即初始命令相互间的逻辑关系先后。
可以理解地,运算脚本的执行过程是按照命令的书写依次进行,通过有向无环的排序实现对运算脚本内命令关系的梳理并将迭代更新过程中仍保留的无用的初始命令也即判定为无意义的执行分支和/或阶段分支删除从而减少需要参与运算的初始命令的总量,提升运算效率,且仍然保留的有意义的执行分支及阶段分支同时开始进行运算,进一步提升脚本的运算效率。
具体的,预设构建方式包括基于每条初始命令的输入输出并结合广度优先搜索算法进行构建,基于有向无环图将初始命令分为多个执行分支,按各执行分支内初始命令的关联性分成多个阶段分支。
优选的,执行分支内的初始命令与执行分支的关系越紧密,也即关联性越多,阶段分支距离执行分支距离越近,反之则越远。
更具体的,广度优先算法的核心思想是:从初始节点开始,应用算符生成第一层节点,检查目标节点是否在这些后继节点中,若没有,再用产生式规则将所有第一层的节点逐一扩展,得到第二层节点,并逐一检查第二层节点中是否包含目标节点。若没有,再用算符逐一扩展第二层的所有节点……,如此依次扩展,检查下去,直到发现目标节点为止。即
从图中的某一顶点V0开始,先访问V0;
访问所有与V0相邻接的顶点V1,V2,......,Vt;
依次访问与V1,V2,......,Vt相邻接的所有未曾访问过的顶点;
循此以往,直至所有的顶点都被访问过为止。
这种搜索的次序体现沿层次向横向扩展的趋势,并结合输入的所有初始命令及输出的基于所有初始命令的有向无环图对所有初始命令进行扩展及检查。
进一步的,将初始命令相互之间的关系定义为有关联性或无关联性,无关联性的初始命令并列排列,有关联性的初始命令有向排列。
更进一步的,执行分支被判定为无意义时,该执行分支中的阶段分支均判定为无意义。
需要说明的是,执行分支作为该分支的核心,该分支上的所有阶段分支均与该执行分支存在关联性,也即每条执行分支中的阶段分支均是与该执行分支存在关联性的初始命令,并随着关联性的逐渐加深,形成更靠后也即在该条执行分支中距离执行分支更远的阶段分支,可知,当执行分支被判定为无意义时,与该执行分支具有关联性的阶段分支也被判定为无意义。
具体的,在判断重排后的初始命令是否需要输入到设计文本中时,优先判断执行分支也即该分支的核心初始命令是否需要输入到设计文本中,进而可以更大程度上的减少运算量,从而提高脚本命令的运算效率。
可以理解地,通过该设计,在脚本运行初就能初步筛选出无需进行运算的初始命令,无论是在运算或验算过程中均能提升效率。
进一步的,请参阅图2,以预设排列方式重排初始命令包括如下步骤:
S21:基于无关联性的初始命令,生成对应数量的执行分支;
S22:基于有关联性的初始命令,依据关联性生成一个执行分支及该执行分支中的阶段分支。
需要说明的是,执行分支在先生成,各执行分支之间无关联性,也即互相并列,执行分支中的阶段分支在后生成,也即与执行分支存在关联性的初始命令则按照关联性从多到少依次排列。
具体的,与执行分支直接相关的初始命令根据关联性多少顺序排列,关联性越强,越紧密,排列靠前,与直接分支通过一个或多个初始命令间接相关的排列靠后,需要关联的初始命令越多,排列越靠后。
可以理解地,基于是否有关联性初步排列出初始命令的执行分支,也即不同阶段,并将有关联性的初始命令依次有向排列,形成有向无环图,进而降低运算量,提高运算效率。
进一步的,请结合图3-图5,以预设合并方式合并阶段分支包括如下步骤:
S411:判断不同执行分支中的阶段分支是否具有关联性,若具有关联性,则判定为可合并项并合并;
S412:若无关联性,则判定为不可合并项。
可以理解地,通过将不同执行分支中相互间有关联性的阶段分支进行合并,能进一步降低运算量,且同时能筛选出无关联性的阶段分支,从而防止其参与运算,进而提升运算效率。
进一步的,获取优化运算脚本并输出之后还包括对优化运算脚本验算过程,具体包括如下步骤:
S42:基于优化运算脚本的阶段分支顺序,将原命令执行顺序更改对应阶段执行顺序;
S43:以预设运算方式执行更改后的阶段执行顺序命令。
需要说明的是,获取优化运算脚本并输出后即可用于实际使用,但是为了保证对初始命令的筛选正确及对应生成的执行分支及阶段分支的正确,需要对优化运算脚本进行验算,从而提升输出结果的准确性。
具体的,预设运算方式为多线程分布式运算。
更具体的,调整原来的命令执行顺序,原本的命令执行顺序是按顺序依次执行,例如执行完命令1后才会执行命令2,依此类推。其中即使命令1与命令2是互不相关的两条命令,也不得不按序执行。通过有向无环结构的多线程分布式方法,实现运算脚本内初始命名关系的梳理,根据初始命令间的关联性,得到多个执行分支,每个分支内又按执行顺序划分成多个阶段分支,如阶段0(STAGE0),阶段1(STAGE1),阶段2(STAGE2)等,而后将不同分支的各阶段的初始命令进行合并,最终得到一个按阶段分支排序的命令集,从而确定多线程分布式运算时哪些初始命令可以同时并行运算,即在不考虑运算资源限制的条件下,同一阶段内的所有初始命令都是同时开始进行运算的,进而提升运算脚本中所有初始命令的运算效率。
可以理解地,在本发明具体实施例中,采用多线程分布式进行运算,实现多个初始命令的并行运算,也即能同时运行多个并列的执行分支及执行分支中的阶段分支,从而提升运算效率,这里对运算方式不做限定,以实际需求为准。
请参阅图6,本发明第二实施例是提供一种运算脚本的优化***1,用于实现如上的运算脚本的优化方法,包括信息获取模块11:用于获取运算脚本的所有初始命令,重排后的执行分支,阶段分支以及优化运算脚本;运算模块12:运算预设构建方式,预设排列方式及预设合并方式的逻辑关系,及对阶段分支的执行结果的判断步骤;重排重构模块13:用于基于预设构建方式构建有向无环图,以预设排列方式将所有初始命令重排。运算脚本的优化***1具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
请参阅图7,本发明第三实施例是提供一种存储介质2,包括存储器21、处理器22及存储在存储器21上并可在处理器22上运行的计算机程序23,处理器22执行计算机程序23时,实现如上的运算脚本的优化方法,存储介质2具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
可以理解地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的实施例中,应理解,“与A对应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在本发明的附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方案中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,在此基于涉及的功能而确定。需要特别注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
与现有技术相比,本发明的一种运算脚本的优化方法、***及存储介质具有以下优点:
1、本发明的一种运算脚本的优化方法,包括以下步骤:提供一运算脚本,获取该运算脚本的所有初始命令并对所述初始命令进行全局扫描,基于预设构建方式构建所述运算脚本的有向无环图;基于所述有向无环图,以预设排列方式将所述初始命令重排,获得至少一个执行分支及所述执行分支中的阶段分支;获取设计文本,并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留对应的执行分支和/或阶段分支;若不需要输入则判定为无意义,并删除该执行分支和/或阶段分支;重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有执行分支及阶段分支的执行结果均有意义时,以预设合并方式合并阶段分支,获取结果作为优化运算脚本输出。
2、本发明的运算脚本的优化方法,执行分支被判定为无意义时,该执行分支中的阶段分支均判定为无意义。通过该设计,在脚本运行初就能初步筛选出无需进行运算的初始命令,无论是在运算或验算过程中均能提升效率。
3、本发明的运算脚本的优化方法,以预设排列方式重排初始命令包括如下步骤:基于无关联性的初始命令,生成对应数量的执行分支;基于有关联性的初始命令,依据关联性生成一个执行分支及该执行分支中的阶段分支。基于是否有关联性初步排列出初始命令的执行分支,也即运算层级,并将有关联性的初始命令依次有向排列,形成有向无环图,进而降低运算量,提高运算效率。
4、本发明的运算脚本的优化方法,以预设合并方式合并阶段分支包括如下步骤:判断不同执行分支中的阶段分支是否具有关联性,若具有关联性,则判定为可合并项并合并;若无关联性,则判定为不可合并项。通过将不同执行分支中相互间有关联性的阶段分支进行合并,能进一步降低运算量,且同时能筛选出无关联性的阶段分支,从而防止其参与运算,进而提升运算效率。
5、本发明还提供一种运算脚本的优化***,用于实现如上所述的运算脚本的优化方法,包括信息获取模块:用于获取运算脚本的所有初始命令,重排后的执行分支,阶段分支以及优化运算脚本;运算模块:运算预设构建方式,预设排列方式及预设合并方式的逻辑关系,及对执行分支和/或阶段分支的执行结果的判断步骤;重排重构模块:用于基于预设构建方式构建有向无环图,以预设排列方式将所述初始命令重排。运算脚本的优化***具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
6、本发明还提供一种存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时,实现如上所述的运算脚本的优化方法,具有与上述运算脚本的优化方法相同的有益效果,在此不做赘述。
以上对本发明实施例公开的一种运算脚本的优化方法、***及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,凡在本发明的原则之内所作的任何修改,等同替换和改进等均应包含本发明的保护范围之内。
Claims (10)
1.一种运算脚本的优化方法,其特征在于:包括以下步骤:
提供一运算脚本,获取该运算脚本的所有初始命令并对所述初始命令进行全局扫描,基于预设构建方式构建所述运算脚本的有向无环图;
基于所述有向无环图,以预设排列方式将所述初始命令重排,获得至少一个执行分支及所述执行分支中的阶段分支;
获取设计文本,并判断执行分支和/或阶段分支的执行结果是否需要输入到设计文本中,若需要输入则判定为有意义并保留对应的执行分支和/或阶段分支;
若不需要输入则判定为无意义,并删除该执行分支和/或阶段分支;
重复对执行分支和/或阶段分支的执行结果判断步骤,直到所有执行分支及阶段分支的执行结果均有意义时,以预设合并方式合并阶段分支,获取结果作为优化运算脚本输出。
2.如权利要求1所述的运算脚本的优化方法,其特征在于:所述预设构建方式包括基于每条初始命令的输入输出并结合广度优先搜索算法进行构建。
3.如权利要求1所述的运算脚本的优化方法,其特征在于:执行分支被判定为无意义时,该执行分支中的阶段分支均判定为无意义。
4.如权利要求1所述的运算脚本的优化方法,其特征在于:将初始命令相互之间的关系定义为有关联性或无关联性,重排时所述无关联性的初始命令并列排列,所述有关联性的初始命令有向排列。
5.如权利要求4所述的运算脚本的优化方法,其特征在于:以预设排列方式重排初始命令包括如下步骤:
基于无关联性的初始命令,生成对应数量的执行分支;
基于有关联性的初始命令,依据关联性生成一个执行分支及该执行分支中的阶段分支。
6.如权利要求5所述的运算脚本的优化方法,其特征在于:以预设合并方式合并阶段分支包括如下步骤:
判断不同执行分支中的阶段分支是否具有关联性,若具有关联性,则判定为可合并项并合并;
若无关联性,则判定为不可合并项。
7.如权利要求5所述的运算脚本的优化方法,其特征在于:获取优化运算脚本并输出之后还包括对优化运算脚本验算过程,具体包括如下步骤:
基于优化运算脚本的阶段分支顺序,将原命令执行顺序更改对应阶段执行顺序;
以预设运算方式执行更改后的阶段执行顺序命令。
8.如权利要求7所述的运算脚本的优化方法,其特征在于:所述预设运算方式为多线程分布式运算。
9.一种运算脚本的优化***,用于实现如权利要求1-8中任一项所述的运算脚本的优化方法,其特征在于:包括信息获取模块:用于获取运算脚本的所有初始命令,重排后的执行分支,阶段分支以及优化运算脚本;
运算模块:运算预设构建方式,预设排列方式及预设合并方式的逻辑关系,及对执行分支和/或阶段分支的执行结果的判断步骤;
重排重构模块:用于基于预设构建方式构建有向无环图,以预设排列方式将所述初始命令重排。
10.一种存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时,实现如权利要求1-8中任一项所述的运算脚本的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310791370.0A CN116775039A (zh) | 2023-06-29 | 2023-06-29 | 一种运算脚本的优化方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310791370.0A CN116775039A (zh) | 2023-06-29 | 2023-06-29 | 一种运算脚本的优化方法、***及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775039A true CN116775039A (zh) | 2023-09-19 |
Family
ID=87989236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310791370.0A Pending CN116775039A (zh) | 2023-06-29 | 2023-06-29 | 一种运算脚本的优化方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775039A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076095A (zh) * | 2023-10-16 | 2023-11-17 | 华芯巨数(杭州)微电子有限公司 | 一种基于dag的任务调度方法、***、电子设备及存储介质 |
-
2023
- 2023-06-29 CN CN202310791370.0A patent/CN116775039A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076095A (zh) * | 2023-10-16 | 2023-11-17 | 华芯巨数(杭州)微电子有限公司 | 一种基于dag的任务调度方法、***、电子设备及存储介质 |
CN117076095B (zh) * | 2023-10-16 | 2024-02-09 | 华芯巨数(杭州)微电子有限公司 | 一种基于dag的任务调度方法、***、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111626430B (zh) | 一种数据处理方法及相关产品 | |
JP4962564B2 (ja) | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム | |
US20150339434A1 (en) | Virtual hierarchical layer propagation | |
CN113703775B (zh) | 一种编译方法、装置、设备及存储介质 | |
US10795672B2 (en) | Automatic generation of multi-source breadth-first search from high-level graph language for distributed graph processing systems | |
JPH01121938A (ja) | オブジェクト生成方法 | |
CN116775039A (zh) | 一种运算脚本的优化方法、***及存储介质 | |
CN110287170B (zh) | 数据库升级方法、状态数据调用方法、设备和存储介质 | |
US20180314733A1 (en) | Dynamic operation scheduling for distributed data processing | |
US20210248002A1 (en) | Scheduling artificial intelligence model partitions based on reversed computation graph | |
Jaiganesh et al. | A high-performance connected components implementation for GPUs | |
CN107526639B (zh) | 资源编排的方法、介质、装置和计算设备 | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
US8312409B1 (en) | Multi-threaded deterministic router | |
US10599638B2 (en) | System and method for identifying maximal independent sets in parallel | |
US11809973B2 (en) | Modularized model interaction system and method | |
JP2019121404A (ja) | グラフベースの類似度検索を用いたfpga実装のインクリメンタル方式による生成 | |
US12013896B2 (en) | Stable graph layout determination | |
JP3675623B2 (ja) | プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体 | |
CN115167822A (zh) | 分支代码合并方法、装置、设备和存储介质 | |
CN117149398A (zh) | 一种内存分配的方法和装置 | |
CN114329058A (zh) | 图像聚档方法、装置和电子设备 | |
CN112379846A (zh) | 一种用于磁盘文件的快速读取方法和*** | |
Robinson et al. | Analysis of a high-performance TSP solver on the GPU | |
CN117076095B (zh) | 一种基于dag的任务调度方法、***、电子设备及存储介质 |
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 |