CN108255492A - 并行程序的生成方法以及并行化编译装置 - Google Patents
并行程序的生成方法以及并行化编译装置 Download PDFInfo
- Publication number
- CN108255492A CN108255492A CN201711469305.7A CN201711469305A CN108255492A CN 108255492 A CN108255492 A CN 108255492A CN 201711469305 A CN201711469305 A CN 201711469305A CN 108255492 A CN108255492 A CN 108255492A
- Authority
- CN
- China
- Prior art keywords
- task
- conditional branching
- dependence
- groups
- branch
- 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 99
- 230000004927 fusion Effects 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 143
- 238000004458 analytical method Methods 0.000 claims description 58
- 230000008569 process Effects 0.000 claims description 58
- 238000004364 calculation method Methods 0.000 claims description 34
- 230000015654 memory Effects 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 13
- 238000009790 rate-determining step (RDS) Methods 0.000 claims description 2
- 230000003068 static effect Effects 0.000 abstract description 21
- 239000000203 mixture Substances 0.000 description 22
- 230000001419 dependent effect Effects 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 13
- 101100311249 Schizosaccharomyces pombe (strain 972 / ATCC 24843) stg1 gene Proteins 0.000 description 11
- 239000000284 extract Substances 0.000 description 11
- 239000007787 solid Substances 0.000 description 10
- 238000000605 extraction Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 238000005259 measurement Methods 0.000 description 6
- 230000003362 replicative effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 235000017166 Bambusa arundinacea Nutrition 0.000 description 3
- 235000017491 Bambusa tulda Nutrition 0.000 description 3
- 241001330002 Bambuseae Species 0.000 description 3
- 235000015334 Phyllostachys viridis Nutrition 0.000 description 3
- 239000011425 bamboo Substances 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000000877 morphologic effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 241000156948 Aphantopus hyperantus Species 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 2
- 101100409308 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) adv-1 gene Proteins 0.000 description 2
- 101150004094 PRO2 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000007500 overflow downdraw method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 101100084404 Mus musculus Prodh gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000007728 cost analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002023 wood Substances 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- 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
-
- 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/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- 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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种并行程序的生成方法。由并行化编译装置(100)执行的并行程序的生成方法包括下述融合步骤:将包括具有条件分支的任务的基准任务和后续任务的任务组融合成新任务,其中,该后续任务是相对于基准任务中包含的条件分支的所有分支方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务(图2/步骤026)。利用本发明的并行程序的生成方法,能够生成在不损害抽取并行性的可能性的情况下进行静态调度的并行程序。
Description
技术领域
本发明涉及并行程序的生成方法以及并行化编译装置。
背景技术
在现有技术中已知一种根据由单处理器系统依次执行的顺序程序生成多处理器系统用的并行程序的并行化编译程序。
在这类并行化编译程序执行的并行化处理中,必须进行将各任务分配给任一处理部件(processor element,作为其简称,以下有时会使用“PE”)的调度(schedul ing)处理。作为该调度处理,已知有在生成并行程序时将各任务分配给任一处理部件的静态调度以及在执行程序时将各任务分配给任一处理部件的动态调度。
动态调度是将具有包含条件分歧的任务的顺序程序并行化使得在多处理器系统上执行时能够被启动而在并行程序中设定的调度手法。连接在条件分歧之后的各个任务的处理执行时间较短时,执行时将该各个任务分配给构成多处理器系统的任一处理部件的调度时间、也即开销(overhead)相对增大,难以实现并行执行的高速化。例如,包含条件分歧的任务以及后续处理的执行时间是10时钟周期(clock cycle),而调度处理的执行时间是1000时钟周期时,执行并行执行反而要花费更多的执行时间。对此,进行静态调度时,在通过并行化编译程序生成并行程序的阶段就能够进行将并行执行可能的各任务分配给各PE,在多处理器系统中让并行程序运行时,不需要调度处理的时间(其中,从严密的角度来看,进行并行执行的PE之间需要短时间的同步处理)。所以,想要对顺序程序进行并行化来实现高速化时,理想的是使用静态调度手法。在这种含义下,除非另有说明,本说明书中所提到的“并行执行可能”这一用语作为与“能够静态调度”对应的语句进行使用。同样,“并行执行”这一表述不作为与“动态调度”相对应的含义进行使用。
然而,例如对不具有循环结构的主要由条件分支、函数调用及赋值语句构成的顺序程序、例如是面向车载控制装置的组装系统的顺序程序进行并行化,并在多处理器系统上使之运行的情况下,至近期为止还无法使用静态调度。
鉴于这种观点,使用静态调度手法将面向主要由条件分支、函数调用及赋值语句构成的组装系统的顺序程序变换成并行编译程序的方法以及将该方法软件化来进行体现的并行化程序逐渐得到提案。该方法内容如下:只要是能够将条件分支和连接在该条件分支之后的任务汇总成一个任务,生成多个该种任务,而这些任务能够并行执行,可以通过静态调度将这些任务分配给各个处理部件。根据该方法,由于条件分支被隐藏在被汇总的一个任务内,且在一个处理部件内部被执行,因此无需进行动态调度。
作为该类并行化编译程序的一个例子,被提案有以下一种并行化程序(参照专利文献1):为了对面向车载装置用的组装系统的顺序程序进行并行化,该并行化编译程序让计算机执行以下(1)~(6)的处理。
(1)基于词法分析(1exical analysis)和句法分析(syntax analysis)的分析结果,将顺序程序划分成多个任务。
这里,任务由一个或多个语句构成。这里,任务被分类到包含连续赋值及条件分支的基本块(BB)、包含重复执行的重复块(RB)和包含函数的子程序块(SB)这三类粗粒度任务中的任一任务。
(2)基于各任务间的控制依赖性(相当于本说明书中的“控制流程”),将具有向不同任务分支的处理的任务确定为开始任务,同时,将开始任务为起点依次被执行的多个一系列处理的所有处理中共同执行的任务当中的任一任务确定为结束任务。这里,“控制流程”是指由顺序程序中记载的顺序及条件分支等被决定的处理路径。
(3)将被确定的开始任务、以开始任务为起点的处理中的结束任务以及在开始任务执行之后、结束任务执行之前的所有任务融合成一个新任务。
(4)对包含上述被融合后的该新任务的任务间的数据依赖性(相当于本说明书中的“数据依赖性”)以及控制依赖性进行分析。然后,基于任务间的数据依赖性以及控制依赖性,通过构成搭载在车辆装置上的多处理器系统的多个处理部件(相当于本说明书中的“处理部件PE”,以下同样)抽取并行执行可能的任务。
(5)进行静态调度,将并行执行可能的各个任务分别分配给任一处理部件,使得该并行执行可能的各个任务由不同的处理部件并行地被执行。
(6)基于静态调度的结果,生成并行程序。
根据该并行化编译程序,即使是包含条件分支的顺序程序,也能够将包含分支处理的任务确定为开始任务,同时将开始任务为起点依次被执行的多个一系列处理的所有处理中共同执行的任务当中的任一任务确定为结束任务,并将包括该开始任务和结束任务的一系列任务融合成一个新任务。该新任务通过静态调度被分配给任一处理部件。
根据专利文献1中的并行化编译程序,即使是在对比如大量包含后续任务的执行时间较短的条件分支的顺序程序进行并行化的情况下,也能够通过静态调度将各宏任务分配给任一处理部件,因此,能够防止执行时的调度处理的开销增大,能够自动生成能进行高速处理的并行程序。
然而,在专利文献1的并行化编译程序中尚有改善的余地。例如,专利文献1中的并行化编译程序基于控制流程决定开始任务和结束任务,并将开始任务、结束任务以及在这些任务之间执行的所有任务融合成一个任务(分组/Grouping)。但是,构成融合对象的开始任务执行之后且结束任务执行之前被执行的多个任务中有可能存在并行执行可能的任务。如果将并行执行可能的多个任务融合在一起的话,抽取并行执行可能的任务的可能性受到损害(可能性被降低)。
现有技术文献
专利文献
专利文献1:日本特开2015-001807号公报
发明内容
鉴于该问题,本发明的目的在于提供一种解决了专利文献1中存在的上述问题点的能够抽取并行执行任务的并行程序的生成方法以及并行化编译装置。
接着,在本发明中,要使用到的主要用语“(任务间的)数据依赖性”、“(任务间的)控制依赖性”以及“任务融合”的含义说明如下。另外,根据需要,在说明的过程中适当地对其他用语进行说明。
首先,对任务间的“数据依赖性”的含义进行说明。众所周知,先行的一个任务中包含的语句和后续的其他任务中包含的语句之间存在语句间的数据依赖性时,称作该其他任务数据依赖于该一个任务。这时,两个任务中分别含有的语句间只需存在一个数据依赖性,则两个任务间属于存在数据依赖性的关系。当任务间存在数据依赖性时,在该先行的一个任务中,只有当与该后续的其他任务中包含的语句之间有数据依赖性的所有语句执行结束,该后续的其他任务的执行才能开始。在实际的程序中的任务之间的数据依赖性分析中,在考虑到这层含义的同时,用“直到该一个任务执行结束,才开始该其他任务的执行”这一表述来意指“该其他任务数据依赖于该一个任务”。也即,在进行这种数据依赖性的分析中,“(任务间的)数据依赖性”存在时,在并行化的过程中不能改变顺序程序中规定的先行的一个任务与后续的其他任务间的执行顺序。
这里,“语句间的数据依赖性”是指下述(A)~(C)的依赖性中至少任意一个关系成立的意思。
(A)后续语句使用先行语句定义的变量(称之为“流依赖”)。变量的定义是指将赋值代入变量的意思,变量的使用是指参照变量的赋值的意思。以下是其中一个例子。
先行语句:var=a
后续语句:X=var
(B)后续语句对先行语句定义的变量进行再定义(称之为“输出依赖”)。再定义是指将新的赋值代入已经被定义好的变量中的意思。以下是其中一个例子。
先行语句:var=a
后续语句:var=b
(C)后续语句定义先行语句使用的变量(称之为“反依赖”)。以下是其中一个例子。
先行语句:X=var
后续语句:var=c
这个情况是指先行语句使用的变量进一步通过先行语句进行定义。
如上所述,处于流依赖、输出依赖、反依赖性的两语句间的执行顺序相反时,运算结果不同,因此,在并行化过程中也需要确保执行顺序不变。
接着,说明任务的“控制依赖性”的含义。任务的控制依赖性与以下的依赖性相关:与连接在条件分支的某一特定分支方向之后的任务的条件分支之间的依赖性关系。条件分支的分支方向确定为一个分支方向,由此使得连接在该一个分支方向之后的任务的执行确定时,则称之为该后续的任务控制依赖于该条件分支的一个分支方向。
此外,也有任务的(控制)依赖性伴随任务间的数据依赖性而出现的情况。详细内容在实施方式的说明部分中进行说明。这里先举出一个例子。
例如可以考虑以下情况:具有两个分支方向的条件分支的分支方向确定为第1分支方向时被执行的第1任务中包含的语句中某一变量被定义,且该变量在该条件分支的分支方向为任意一个方向时都会被执行的第2任务中包含的语句中被再定义的情况、也即第2任务中包含的语句输出依赖于第1任务中包含的语句。
换而言之,第1任务相对于条件分支的第1分支方向具有控制依赖性,第2任务数据依赖于第1任务。需要说明的是,第2任务在该条件分支的分支方向为任一方向时都会被执行,因此,第2任务相对于该条件分支的任一分支方向均不具有控制依赖性的关系。
在该场合中,条件分支的分支方向确定为该第1分支方向时,自然第1任务就会被执行,数据依赖于该第1任务的第2任务也能被执行。这时,在这种例子中,由第1任务包含的语句定义的变量通过第2任务包含的语句被再定义。另外,当条件分支的分支方向确定为与该第1分支方向不同的第2分支方向时,第1任务确定为不执行,而第2任务能够被执行而不用考虑与第1任务的执行顺序。这时,在第1任务中不会执行该变量的定义,但是,该变量通过第2任务包含的语句被(再)定义,因此,不会对其执行构成障碍。
即,因该条件分支的分支方向确定为第2分支方向,可以说第2任务相对于第1任务的数据依赖性被解除。
以上的说明涉及了第1任务和第2任务间存在“输出依赖”这种数据依赖性的情况。在“反依赖”的情况时,该变量也是通过第2任务来被定义,因而与“输出依赖”的情况相同。然而,当上述两语句间的“数据依赖”是“流依赖”的情况时,以在确定为第2分支方向之前在第2任务中使用的变量已经被定义的情况为前提,通过使条件分支的分支方向确定为上述第2分支方向,第1任务确定为不执行,第2任务能够被执行而不用考虑与第1任务之间的执行顺序。
这样,通过使条件分支的分支方向确定为第2分支方向,第2任务相对于第1任务的数据依赖性解除,从而可以开始第2任务的执行。也即,如果第2任务相对于该条件分支的任一分支方向都不具有控制依赖性,这样,第2任务与第1任务的数据依赖性不存在,则第2任务与该条件分支能够并行执行。但是,第2任务相对于第1任务具有数据依赖性,因此,除非在第1任务结束或者在条件分支的分支方向确定为第2分支方向后,无法执行第2任务。在这种情况下,第2任务相对于条件分支的第2分支方向具有扩展控制依赖(extended-controldependency)关系。
如上所述,能够通过数据依赖性和控制依赖性、以及其组合能够表达某一任务能够执行的条件。也即,数据依赖性、控制依赖性及扩展控制依赖性是使得对顺序程序进行了并行化后的程序生成与原始的顺序程序相同的运算结果的条件。因此,在对顺序程序进行并行化时,对要构成的任务的依赖性的把握是重要的。
接着,说明“任务融合”的含义。“任务融合”是指将包含彼此关联的多个任务的任务组规定成一个新任务的含义。通过该“任务融合”生成的新任务能够在并行程序的生成时的调度中被分配给一个PE。另外,该“任务融合”与比如作为重复块融合的“循环融合”等“代码融合”不同,被融合的该多个任务的结构/功能等能够维持原样,不会有所变化。
为了解决上述课题,本发明是一种通过计算机实现的从顺序程序生成并行程序的方法,该并行程序能够在包括多个执行运算处理的运算处理单元的系统中执行,该并行程序的生成方法的特征在于包括以下各步骤:
将所述顺序程序划分为多个任务的步骤;
分析所述多个任务以确定所述多个任务的各自的数据依赖性和控制依赖性的步骤;
基于所述数据依赖性和所述控制依赖性,将包括基准任务和所有后续任务的任务组决定为应融合任务组且将该应融合任务组融合成新任务的步骤,其中,所述基准任务是具有条件分支的任务,所述后续任务是相对于该基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务。
在本说明书中,“任务相对于条件分支的任一分支方向具有间接控制依赖(indirct control dependency)关系”这一表述是指:任务与具有条件分支的分支方向之间的控制依赖或扩展控制依赖重复两次以上的含义。例如,在包含任务C的任务D控制依赖于条件分支A的某一分支方向B且任务F扩展控制依赖于条件分支C的某一分支方向E时,条件分支A的分支方向B与任务F之间控制依赖或扩展控制依赖重复两次以上。在这种情况下,表示为任务F间接控制依赖于条件分支A的分支方向B。间接控制依赖性是与间接控制依赖性、控制依赖性及扩展控制依赖性中的任一依赖性均不相同的概念,与扩展控制依赖性相同,间接控制依赖性可以从数据依赖性及控制依赖性的关系的组合导出。
根据本发明的并行程序的生成方法,通过执行任务划分步骤,能够将顺序程序中包含的任务划分成多个任务。
通过对该多个任务执行依赖性分析步骤,分析该多个任务的各自的数据依赖性和控制依赖性。
通过基于该分析结果执行融合步骤,将包括条件分支的基准任务和所有后续任务的任务组融合成一个新任务。所述后续任务是相对于该基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务。
需要说明的是,在本说明书中记载的“后续任务”存在多个时,则将其称为“后续任务组”。
这样,任务组通过融合步骤被融合成一个任务,包含条件分支的基准任务和所有后续任务的任务组被作为一个新任务来对待,由此,条件分支被隐藏在一个任务内。其中,所述后续任务是相对于条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务。
从包含条件分支的基准任务和所有后续任务的任务组中进一步抽取并行执行可能的任务并通过静态调度进行并行执行这一处理在该后续任务如后所述不满足规定条件的情况下一般是困难的。但是在本发明中,即使将这些任务作为一个任务来对待也不会损害抽取任务间的并行性的可能性。其中,所述后续任务是相对于条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务。因此,根据本发明的编译程序,能够生成可选择任务组的能够静态调度的并行程序,其中,该任务组是从不损害抽取任务间的并行性的可能性的观点出发能够作为一个任务组来看待。
在本发明的并行程序的生成方法中,进一步包括以下各步骤:
基于所述数据依赖性,调度将包括所述新任务的多个任务的各个任务分配给所述多个运算处理部的步骤;
基于所述调度结果生成所述并行程序的步骤。
根据具有该构成的并行程序的生成方法,通过依赖性分析步骤能够确定多个任务间的数据依赖性。并且,计算机在所述“融合步骤”执行之后的调度步骤中基于任务间的数据依赖性将包括所述新任务的多个任务的各个任务分配给任一运算处理部,并基于该调度结果生成并行程序。
如上所述,根据本发明的并行程序的生成方法,由于是在考虑了数据依赖性、控制依赖性及扩展控制依赖性的基础上进行调度,因而从不损害抽取任务间的并行性的可能性的情况下能够进行静态调度这一观点来看,能够生成合适的并行程序。
在具有该构成的并行程序的生成方法中,基于在所述数据依赖性及控制依赖性的分析中获得的各任务间的数据依赖性和控制依赖性,分析所述多个任务的各个任务的最早执行可能条件,并且基于所述分析结果来确定应融合任务组。
根据具有该构成的并行程序的生成方法,基于各任务间的数据依赖性和各任务的控制依赖性进行最早执行可能条件的分析。由此,能够与现有的并行化手法进行整合。
在本发明的并行程序的生成方法中,进一步包括以下步骤:
确定包括所述基准任务和第1后续任务的任务组的步骤,其中,所述第1后续任务是指:相对于所述基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性或扩展控制依赖性的任务;
向所述任务组追加所有第2后续任务的步骤,其中,所述第2后续任务是指:相对于所述任务组中包含的条件分支的所有分支方向的各个分支方向具有控制依赖性或扩展控制依赖性的任务;
重复追加第2后续任务直到相对于所述任务组中包含的条件分支的任一分支方向具有控制依赖性或扩展依赖性的任务均不存在的步骤;
将所述任务组决定为所述应融合任务组的步骤。
根据具有该构成的并行程序的生成方法,通过重复执行将以下任务追加到任务组的处理,能够确定对包含在这种任务中的所有条件分支进行隐藏的任务组,并将该任务组融合成一个新任务。其中,上述任务是指:相对于基准任务、第1后续任务或第2后续任务中任一任务中包含的所有条件分支的各个分支方向具有控制依赖性或扩展控制依赖性的任务。其结果,能够从通过静态调度进行并行化是困难的且循环结构少、条件分支多的顺序程序中抽取多个任务作为“应融合任务组”,并将该“应融合任务组”融合成一个新任务。
如上所述,从不损害任务间的并行性抽取的可能性的情况下能够进行静态调度的观点来看能够生成更为合适的并行程序。
除此之外,通过重复抽取相对于第1或第2后续任务的任一任务中包含的条件分支的所有分支方向的各个分支方向具有控制依赖性或扩展控制依赖性的任务,能够在控制计算量的情况下抽取任务组。
在本发明的并行程序的生成方法中,进一步还包括以下各步骤:
判定是否满足包括并行执行可能条件在内的规定条件的步骤,其中,所述并行执行可能条件是指:相对于所述应融合任务组中包含的所述基准任务包含的条件分支中的一个分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的多个任务是否彼此之间不具有控制依赖性、间接依赖性、扩展控制依赖性或数据依赖性;
当判定不满足所述规定条件时,将所述应融合任务组融合成所述新任务;
当判定满足所述规定条件时,复制所述基准任务中包含的条件分支,将彼此之间不具有控制依赖性、间接依赖性、扩展控制依赖性或数据依赖性的所述多个任务连接在包含各个被复制的条件分支的多个条件分支的各个条件分支之后,对该多个条件分支的各个条件分支与连接在该多个条件分支的各个分支之后的所述多个任务进行组合,生成多个任务组,将该多个任务组决定为新的多个应融合任务组,并将该多个应融合任务组融合成各个所述新任务。。
根据具有该构成的并行程序的生成方法,通过由计算机执行条件判定步骤,判定用于使多个任务能够并行执行的规定条件是否满足,其中,所述多个任务是指:相对于所述基准任务中包含的条件分支的一个分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的任务。并且,在条件判定步骤中判定规定条件不满足时,对包括基准任务和后续任务的“应融合任务组”执行融合步骤。当通过该融合步骤生成的新任务存在多个且彼此之间不具有控制依赖性、间接依赖性、扩展依赖性及数据依赖性时,能够将这些多个新任务分配给各个PE。另外,即使在所述新任务只存在一个时,只要彼此之间不具有控制依赖性、间接依赖性、扩展依赖性及数据依赖性的任务另外存在,这些任务也能够彼此并行执行。
另一方面,当在条件判定步骤中判定规定条件满足时,通过计算机执行复制步骤,对包含在基准任务中的条件分支进行复制。并且,通过计算机执行后续步骤,彼此不具有控制依赖性、间接依赖性、扩展依赖性及数据依赖性的所述多个任务连接在各自不同的条件分支之后。这样,并行执行可能的任务分别与不同的条件分支一起包含于“应融合任务组”中,这些多个“应融合任务组”分别被融合到新任务中,因此,能够将该新任务分别分配给个别的处理部件。由此,不会损害相对于所述基准任务中包含的条件分支的一个分支方向具有控制依赖性、间接依赖性或扩展依赖性的多个任务间的并行性抽取的可能性。
这里,所述规定条件设定成:首先前提是“所述应融合任务组中有并行执行可能的任务存在”。也即,从原来的顺序程序尽可能多地抽取并行执行可能的任务的观点来看,分析所述应融合任务组中也是否存在后述的并行执行可能的任务这一处理相对于本发明的目是重要的。
如上所述,根据具备该构成的并行程序的生成方法,从能够在不损害(不降低)抽取任务间的并行性的可能性的情况下进行静态调度的观点来看能够生成更为适合的并行程序。
附图说明
图1是一个实施方式的整体构成图。
图2是一个实施方式的并行程序生成处理的流程图。
图3是其他实施方式的行程序生成处理的流程图。
图4是说明分析器(profiler)的插入位置的图。
图5是任务的多层展开的示意图。
图6是表示宏流程图(macro flow graph)(MFG)的第1例的图。
图7是表示图6的MFG中各任务的每个最早执行可能条件的图。
图8是表示根据图6的MFG生成的宏任务图(MTG)的第1例的图。
图9详细展开了图2和图3的STEP018中应融合任务组决定处理的流程图。
图10是为了说明图9的流程图而从图8的MTG中提取出的图。
图11是以图8的MTG的第1例为基础的关于基准任务中包含的条件分支的复制的示意图。图11A表示复制前的宏任务图,该宏任务图包括图8中包含的基本块BB7~BB10及基本块BB12,并省略了延伸到外部的边;图11B表示条件分支(基准任务)复制后的宏任务图。
图12是表示MFG的第2例的图,是基本块BB5控制依赖于基本块BB1且基本块BB11控制依赖于基本块BB7时的MFG。
图13表示图12的MFG中各任务的每个最早执行可能条件的图。
图14是根据图8的MTG生成的融合后的MTG。图14A表示在不复制条件分支的情况下融合后的MTG;图14B表示在进行了条件分支复制的情况下融合后的MTG;图14C表示根据现有技术融合任务后的MTG。
图15是表示根据图12的MFG生成的MTG的第2例的图。
图16是为了说明图9的流程而从图15提取出的图。
图17是关于以图15的MTG的第2例为基础进行的包含于基准任务的条件分支的复制的示意图。图17A表示复制前的宏任务图,该宏任务图包括图15中包含的基本块BB7~BB11及基本块BB12,并省略了延伸到外部的边;图17B表示条件分支(基准任务)复制后的宏任务图。
图18是根据图15的MTG生成的融合后的MTG。图18A表示在不复制条件分支的情况下融合后的MTG;图18B表示在进行了条件分支复制的情况下融合后的MTG;图18C表示根据现有技术融合任务后的MTG。
图19是表示MFG的图,用于说明专利文献1的融合方法的原理。
图20是表示说明基于图9的MFG而生成的用于说明本发明的原理的图。
符号说明
100 编译装置
110 运算处理要素
120 读取装置
130 写入装置
140 存储装置
200 多处理器系统
210 集中式共享存储器
220 输入输出装置
C 并行化编译程序
PE1 第1处理部件
PE2 第2处理部件
PEn 第n处理部件
P1 顺序程序
CF 设定文件
P2 并行程序
PB 二进制代码。
具体实施方式
参照图1至图18说明本发明的实施方式。
(编译装置的构成)
并行化编译装置100以在单处理器系统中能够依次执行的顺序程序P1和设定文件CF为输入,输出能够在多处理器系统200中并行执行的二进制代码PB。需要说明的是,并行化编译装置100对应于本发明的“电脑”的一例。
为了实现该功能,并行化编译装置100具备运算处理要素110、读取装置120、写入装置130和存储装置140。
运算处理要素110构成为具备中央运算单元(CPU)等,并构成为能够发挥任务划分部111、依赖性分析部112、融合部113、调度部114、生成部115、应融合任务组决定部116以及条件判定部117的作用。其中,上述各部用于从存储器等存储装置140中读取并行化编译程序C,并按照并行化编译程序C执行用于进行后述并行化处理的运算处理。通过按照并行化编译程序C执行运算处理,运算处理要素110执行后述图2或图3中STEP002至STEP032的一系列处理。由此,并行化编译装置100生成能够进行并行执行的二进位码PB,并将其输出。
读取装置120是从外部存储介质读取信息的装置,例如由CD驱动器、DVD驱动器或蓝射线(Blu-ray)(注册商标)驱动器等构成。也可以借助键盘等输入装置或通信装置代替读取装置120从外部输入顺序程序P1及设定文件CF。还可以从与并行化编译装置100连接的外部存储介质(USB存储器)等读取顺序程序P1及设定文件CF。
顺序程序P1例如是通过Fortran、C语言等高级语言编写的源代码。
设定文件CF记录了生成多处理器系统200中运行并行程序所必需的下述信息:构成多处理器系统200的处理部件的数量;构成部件的CPU等处理器的类别及本地存储器的存储容量或/和访问时间;搭载在多处理器系统200上的共用的存储区域的存储容量或/和访问时间;搭载在多处理器系统200上的OS的信息等;
在并行化编译装置100和多处理器系统200使用共用的存储装置的情况下,并行化编译装置100也可以通过参照该存储装置来获取记录在设定文件CF中的信息。
写入装置130由用于将信息写入外部存储介质的装置、例如CD-R驱动器、DVD-R驱动器或蓝射线(Blu-ray)(注册商标)驱动器等构成。例如,也可以借助通信装置取代输出装置130将二进制代码PB输出到外部。也可以将二进制代码PB写入与并行化编译装置100连接的外部存储介质(USB存储器)等。
二进制代码PB是可由多处理器系统200的第一处理部件PE1~第n处理部件PEn的各个处理部件分别执行的执行用程序。通过由第一处理部件PE1~第n处理部件PEn执行二进制代码PB,能够获得与单处理器系统执行顺序程序P1(的二进制代码)的情况相同的处理结果。
存储装置140由ROM、RAM及HDD等存储装置(主存储装置及辅助存储装置等)和I/O电路构成。存储装置140至少包括非易失性存储器。RAM是可读写的易失性存储器,ROM是读出专用的非易失性存储器,HDD是可读写的非易失性存储器。在ROM和HDD中预先存储有由运算处理要素110读出并执行的程序等。RAM是在运算处理单元110执行存储在ROM和HDD中的程序时作为用于暂时保存该程序的存储区域或是用于暂时保存作业用数据的存储区域进行使用。另外,也可以代替RAM或者在具备RAM的基础上,HDD作为用于暂时存储该程序的存储区域或是用于暂时存储作业用数据的存储区域进行使用。
在存储装置140的非易失性存储器中,保存有事先安装的并行化编译程序C和设定文件。
(多处理器系统的构成)
处理器系统200具备n个构成处理部件的PE1~PEn、集中式共享存储器210和多处理器系统的输入输出装置220,这些处理部件和装置等通过总线连接或交叉总线连接等互联网彼此连接。各个处理部件分别相当于本发明的“运算处理部”。
第k处理部件PEk(k=1,···,n)具备中央运算单元CPU、本地数据存储器LDM、数据传送单元DTU、分布式共享存储器DSM和本地程序存储器LPM。
第k处理部件PEk(k=1,…,n)的构成只要是能够进行规定的运算处理也可以与该结构不同。例如,第k处理部件PEk(k=1,...,n)除了具备本地数据存储器LDM和本地程序存储器LPM之外,还可以进一步具备高速缓冲存储器(Cache memory),或者由高速缓冲存储器取代上述本地数据存储器LDM和本地程序存储器LPM。第k处理部件PEk(k=1,...,n)可以具有用于控制时钟频率或电源电压的寄存器。第k处理部件PEk(k=1,...,n)除了中央运算单元可以进一步具备加速器(accelerator)或者具备加速器来代替中央运算单元CPU。另外,相反也可以省去CPU以外的构成要素(LDM、LPM、DSM、DTU)中的全部要素或一部分要素。而且,第k处理部件PEk(k=1,…,n)也可以是彼此不同的构成。
中央运算单元CPU是通用处理器。
本地数据存储器LDM只有从包括该LDM的处理部件才能访问的存储装置(由RAM等构成)构成。
数据传送单元DTU是管理处理部件之间、第k处理部件PEk与集中式共享存储器210之间或者第k处理部件PEk与多处理器系统的输入输出装置220之间的数据传送的单元。
作为各处理部件的构成要素之一的分散式共享存储器DSM是从其他处理部件也能够访问的存储装置(由RAM等构成),但有时也不一定要设置该分散式共享存储器。
本地程序存储器LPM存储包括该LPM的第k处理部件PEk执行的程序(例如是二进制代码当中被分配给第k处理部件PEk的部分的程序)。
一部分处理部件也可以具备数字信号处理器(Digital signal proce ssor:“DSP”的简称)或动态可重构处理器(Dynmically Reconfigurable Processor),以替代CPU。
各处理部件PE1~PEn可以被分成构成阶段性处理部件组的处理部件组PG。该分组手法的具体内容公开于参考文献1(宫沢稔、冈本雅巳、笠原博德的“阶段型宏数据流处理中的子程序并行处理手法(階層型マクロデ一タ7口一処理におけるサブル一チン並列処理手法)”信息处理学会全国大会演讲论文集,1994年/第48届)中。
需要说明的是,中央运算单元CPU、处理部件PE1~PEn的各个处理部件或处理部件组PG对应于本发明的“运算处理部”的一例。
集中式共享存储器210由各处理部件PE1~PEn能够访问的存储介质(由RAM,ROM,HDD等构成)构成。
多处理器系统的输入输出装置220根据情况可以由例如CD驱动器、DVD驱动器或Blu-ray(注册商标)驱动器等、从外部存储介质中读取信息的装置构成。例如可以借助通信装置从外部将二进制代码PB输入到多处理器系统200中,以取代多处理器系统的输入输出装置220。也可以通过直接将二进制代码PB写到多处理器系统的存储装置(集中式共享存储器210或本地程序存储器LPM)中,来输入该二进制代码PB。当然,输入输出装置220具有读入在多处理器系统中进行运算处理的数据和输出运算结果的功能。
特别是在多处理器系统200被用作车辆等控制对象的控制用处理器系统时,多处理器系统的输入输出装置220具有实时读入控制所需的表示控制对象的状态的状态信息数据(例如车辆的引擎转速、温度等)作为二进制数据的功能以及在用并行程序运算处理后实时输出用于对控制对象进行控制的控制信息数据的功能。
如上述说明,具备处理部件PE1~PEn或是对这些处理部件进行了分组后的处理部件组PG、并进一步还具备共享存储装置和/或输入输出装置的多处理器系统相当于执行由本发明的并行化编译装置生成的并行程序的“系统”。另外,本发明的“系统”不限定于集成在一个半导体芯片上的多处理器系统或是将多个运算处理部搭载到一个盒体内而构成的系统,还包括借助通信将作为运算处理部的多个计算机彼此连接而构成的系统。
(并行程序生成处理)
接着,参照图2的流程,然后参照说明其他例子的图3,说明通过由并行化编译装置100的运算处理要素110执行并行化编译程序C来进行并列程序P2及其二进制代码PB的生成处理。
首先,从图2的说明开始。
运算处理要素110借助读取装置120读取顺序程序P1及设定文件CF时,对顺序程序P1执行词法分析及句法分析(图2/STEP002)。
任务划分部111基于词法分析及句法分析的分析结果,将顺序程序P1划分成包含赋值语句及条件分支的基本块(BB)、包含重复执行的重复块(RB)和包含函数的子程序块(SB)这三类粗粒度任务(宏任务)(图2/STEP004)。需要说明的是,也可以将融合了一个或多个基本块(BB)的伪赋值语句块(BPA)(pseudo assignment statement)作为一个任务进行处理。另外,图2/STEP004的处理对应于本发明的“任务划分步骤”的一例。
任务划分部111对包括各任务的执行时间的执行成本进行分析(图2/STEP006)。
例如,任务划分部111如图4所示在各个任务的前后分别插入分析器(profiler)pro1~8并按照规定的场景(scenario)执行,由此计测作为执行成本的各任务的任务执行次数和执行时间(e)。例如,考虑任务MT1的执行成本。在MT1之前插入有pro1(mp_prop_count(1);mp_prop_clock_start(1)),在MT1之后被插入有pro2(mp_prop_clock_end(2)),pro1计测MT1中处理通过的次数及MT1在该时的处理的开始时刻,pro2计测MT1的处理结束时刻。MT1的执行时间可以根据MT1的结束时刻的计测值减去开始时刻的计测值来求得。
另外,pro3(mp_prop_count(2);mp_prop_clock_start(2))计测MT2的处理次数和处理开始时刻,pro4(mp_prop_clock_end(2))计测MT2的处理结束时刻;pro5(mp_prop_count(3);mp_prop_clock_start(3))计测MT3的处理次数和处理开始时刻,pro 6(mp_prop_clock_end(3))计测MT3的处理结束时刻。MT2和MT3从MT1分支并与MT1后续连接,MT2和MT3的处理次数之和与MT1的处理次数相一致。另外,MT2的处理次数除以MT1的处理次数,就能够计算出MT2从MT1分支出来的概率。同样,能够计算出分支到MT3的概率。此外,MT2和MT3与MT1的情形相同,分别从处理结束时刻的计测值减去处理开始时刻的计测值,就能够求解出各自的执行时间。
通过这种方式,同样能够计测出其他所有任务的执行时间(执行成本)。
只要能够计测到执行时间以及分支到条件分支的各分支方向上的概率,基于该数据,就能够计算出各种任务组的执行成本。任务的执行成本计算的内容记载在参考文献2(小幡元树,白子凖,神长浩气,石坂一久,笠原博德的“用于多粒度并行处理的阶段的并行性控制手法(マルチグレィン並列処理のための階層的並列性制御手法)”信息处理学会论文集,2003年)中。
执行成本中除了包括这类执行次数和执行时间,还可以包括用于执行任务的消耗电力。利用该计测到的各任务的执行成本,能够计算出任务组(多个任务的集合)的执行成本。
在执行了执行成本分析STEP006后,当包含有执行成本特别大的子程序块SB时,任务划分部111在必要的场合对该子程序块SB执行内联扩展(inline expansion)。该内联扩展有时执行有时不执行,因此在图2(或图3)中未对其进行表示。内联扩展众所周知是用子程序块SB中的程序代码置换包括程序中所包含的子程序的函数调用的含义。图5中表示了构成程序的基本块BB、重复块RB和子程序块SB这三类(宏)任务中可能存在的分层后的并行性。图5例如表示了以下的意思:SB中包含的程序代码属于调用该SB(进行函数调用)的层(1st layer)以下的层(2nd layer、3rd layer),同样能够被划分成BB、RB、SB。该内联扩展在以下场合中会被应用到:即,通过将子程序块SB中的程序代码扩展到上位层并包括该扩展在内进行分析从而使得抽取并行性的可能性变高的场合。但是,频繁地使用内联扩展时,程序代码的规模有时会变得极大。因此,从上位层开始一层层地进行内联扩展。在进行内联扩展时,处理流程再次回到任务划分步骤STEP004。另外,也可以将从并行化处理流程的起头到内联扩展后的程序作为并行化对象。
在执行成本分析结束后,依赖性分析部112对在任务划分处理中被划分的各任务进行控制流程及数据依赖性的分析(图2/STEP010),并生成宏流程图(macro flow graph)(以下简称“MFG”)(图2/STEP012)。
将通过这种方式生成的MFG的一例示于图6中。如图6所示,MFG由表示成节点的任务、连接两个节点的实线边缘及虚线边缘构成。此外,在图6中,EMT14是表示一组任务结束的标记,并不是指任务。
各任务是基本块(BB)(或是伪赋值语句块(BPA))、重复块(RB)及子程序块(SB)中的任意一个块。各实线边表示后处理的任务(构成顺序程序的后执行的任务)数据依赖于前处理(构成顺序程序上的前执行的任务)。各虚线边表示先行处理的任务到后续处理的任务的控制流程。节点内的小圈表示条件分支。
例如,在图6中,基本块BB1、基本块BB2以及基本块BB5分别通过虚线边连结,这表示包含于基本块BB1中的条件分支的各分支方向是基本块BB2和基本块BB5。在后文的说明中,在MFG中,比如将基本块BB1中包含的条件分支的分支方向是BB2的分支方向的情况表示为“BB12”。其中,使用包含条件分支的任务BB1的名称,并将控制流程上的分支方向上最初的任务BB2的号码2作为下标数字进行表示。同样,将基本块BB1中包含的条件分支的分支方向是BB5的分支方向表示成“BB15”。
另外,在图6中,基本块BB3和基本块BB6用实线边连结。这表示子程序块BB6数据依赖于基本块BB3。
另外,图6中的MFG中各边的箭头省略,各边的方向为朝下。
依赖性分析部112针对MFG分析任务的最早执行可能条件(图2/STEP014)。需要说明的是,图2/STEP014的处理相当于本发明的“依赖性分析步骤”中包含的“最早执行可能条件分析步骤”的一例。通过基于MFG分析各任务的控制依赖性及数据依赖性进行任务的最早执行可能条件的分析。由于只要各任务的控制依赖性及数据依赖性的分析结束,事实上最早执行可能条件就能够简单地进行实施,因此本说明书中是指对两者或两者中的任一者进行依赖性分析。
首先,说明对图6的MFG实施了控制依赖性及数据依赖性的分析的情况。根据图6所示的基本块BB1的条件分支的执行结果,决定可否执行基本块BB2,因此,基本块BB2相对于基本块BB1中包含的条件分支的一个分支方向BB12是控制依赖关系。
另外,根据基本块BB2中包含的条件分支的分支方向,决定是否要执行基本块BB3,因此,基本块BB3相对于基本块BB2中包含的条件分支的一个分支方向BB23是控制依赖关系。在该情况下,基本块BB3相对于基本块BB1中包含的条件分支的一个分支方向BB12是间接控制依赖关系。
此外,不管基本块BB1的条件分支的分支方向是向哪一方向,基本块BB5都会被执行,因此,基本块BB5相对于基本块BB1中包含的条件分支的所有分支方向BB12,BB15不是控制依赖关系。
基本块BB6对基本块BB3具有数据依赖性。根据对基本块BB1的条件分支的一个分支方向BB15的确定,即使基本块BB2确定了不被执行(进而基本块BB3也确定不被执行),也能够执行基本块BB6。因此,BB6相对于基本块BB1中包含的条件分支的一个分支方向BB15是扩展控制依赖关系。
另外,通过确定基本块BB2的条件分支的一个分支方向BB24,即使基本块BB3确定不被执行时,也能够执行基本块BB6。因此,基本块BB6相对于基本块BB2的条件分支的一个分支方向BB24是扩展控制依赖关系。
MFG表示顺序程序中任务间的控制流程关系以及数据依赖性,但是并不表示并行性。为了抽取并行性,需要基于说明至此的各任务的控制依赖性和该各任务间的数据依赖性的分析结果进行最早执行可能条件的分析。某一任务的最早执行可能条件是指能够让该任务以最早时刻执行的条件。这里,各任务中以下关系成立(参照参考文献3:稻石大祐、木村啓二、藤本谦作、尾形航、冈本雅巳、笠原博德的“利用了最早执行可能条件分析的缓冲最优化手法(最早実行可能条件解析を用ぃたキヤツシユ最適化手法)”,信息处理学会全国大会演讲论文集,1999/第58届)。
(1)第i任务MTi相对于第j任务MTj(j≠i)中所包含的条件分支的一个分支方向是控制依赖关系的情况时,只要第j任务MTj的条件分支的分支方向确定,第j任务MTj的执行即使没有结束,第i任务MTi也能够执行。
当(2)当第i任务MTi数据依赖于第k任务MTk(k≠i)时,在第k任务MTk的执行没有结束的期间,第i任务MTi无法执行。
对上述进行整理后,第i任务MTi的最早执行可能条件能够通过下述(3)和(4)进行表述。
(3)第i任务MTi所控制依赖的第j任务MTj的条件分支向包含第i任务MTi的路径(path)分支。
(4)确定第i任务MTi所数据依赖的第k任务MTk(k≠i)全部结束或者第k任务MTk(k≠i)不执行。
例如,宏流程图(MFG)中的基本块BB6(相当于上述“MTi”)的最早执行可能条件可以通过以下(5)和(6)来表述。
(5)确定执行基本块BB1(相当于上述“MTj”)(因为不管基本块BB1的分支方向是向哪一方向,都确定执行基本块BB6。)
(6)决定基本块BB6所数据依赖的基本块BB3(相当于上述“MTk”)结束或是基本块BB6的数据依赖的基本块BB3不执行。
此处,“决定基本块BB6所数据依赖的基本块BB3不执行”是指:按照图6的情况来看是“基本块BB3所控制依赖的基本块BB2中的条件分支的分支方向确定为执行基本块BB4的分支方向BB24”或是“基本块BB3所间接控制依赖的基本块BB1中的条件分支的分支方向确定为执行基本块BB5的分支方向BB15”。
并且,“基本块BB3所控制依赖的基本块BB2中的条件分支的分支方向确定为执行基本块BB4的分支方向BB24”的情况的前提条件是“基本块BB1的条件分支的分支方向确定为执行基本块BB2的分支方向BB12”,因此,该情况包括“确定执行基本块BB1”的情况。
另外,“基本块BB3所间接控制依赖的基本块BB1中的条件分支的分支方向确定为基本块BB5的分支方向BB15”的情况包括“确定执行基本块BB1”的情况。
所以,图6的MFG中所示的基本块BB6的最早执行可能条件能够按照下述方式进行简化。
确定基本块BB3结束、或是基本块BB1的条件分支的分支方向确定为执行基本块BB5的分支方向BB15、又或是基本块BB2的条件分支的分支方向确定为执行基本块BB4的分支方向BB24。需要说明的是,最早执行可能条件并不一定要进行这种方式的简化。
在对其他任务也进行与如上所述对基本块BB6执行的最早执行可能条件分析相同的分析时,各任务的最早执行可能条件可以通过图7中所示的表来进行表述。图7中所示的表的左侧各栏表示各个任务的名称,右侧各栏表示各任务所数据依赖的任务、或是控制依赖或扩展控制依赖的分支方向。例如,图7所示的表中示出,BB2控制依赖于BB1的条件分支的分支方向BB12。另外,在图7所示的表中示出,BB6数据依赖于BB3,控制依赖于BB1的条件分支的分支方向BB15,并扩展控制依赖于BB2的条件分支的分支方向BB24。在图7所示的表中,“or”表示只要任一条件满足,左栏的任务即可执行的含义。虽然在图7中所示的表中没有示出,在表示要满足多个条件时才能执行的情况时,可以通过“and”来表述,比如(BB15and BB3)。
依赖性分析部112基于图2/STEP014的最早执行可能条件分析的结果生成对任务间的并行性进行了抽取的宏任务图(以下简称“MTG”)(图2/STEP016)。
例如,按照已说明的内容,运算处理要素110基于对图6的MFG中各任务执行图2/STEP014的最早执行可能条件分析而得的结果,生成图8中所示的MTG。
与MFG相同,MTC中的节点表示任务,节点内的小圈表示任务内的条件分支,实线边表示数据依赖性,虚线边表示控制依赖性或扩展控制依赖性。另外,如对图6的说明中所述,图8的MTC中的EMT14是表示一组任务结束的标记,并不是指任务。
另外,包束各个边的弧有两种,实线弧表示由该弧包束的各个边属于AND关系、即分别连接在实线弧包束的多根虚线边后的任务能够并行执行,虚线弧表示由该弧包束的各个边属于OR关系、即分别连接在虚线弧包束的多个虚线边后的各任务属于通过条件分支能够被选择的选择关系。
例如,在图8所示的MTG中,基本块BB6相对基本块BB1具有数据依赖性,通过表示数据依赖性的实线边与基本块BB3连接。
例如,从图6的MFG可知,基本块BB6相对基本块BB1中包含的条件分支的一个分支方向BB15以及基本块BB2中包含的条件分支的一个分支方向BB24具有扩展控制依赖性。因此,基本块BB6与以下两个分支方向分别连接。其中,一分支方向是与基本块BB6通过表示控制依赖性或扩展控制依赖性的虚线边向基本块BB1中包含的条件分支的BB2及BB4延伸的分支方向不同的分支方向;另一分支方向是与通过上述虚线边向基本块BB2中包含的条件分支的BB3延伸的分支方向不同的分支方向。
另外,也能够与基本块BB6的说明相同地对图8的MTG中的基本块BB12进行说明。即,首先BB12数据依赖于基本块BB11。
并且,从图6的MFG可知,BB12相对基本块BB7中包含的条件分支的一个分支方向BB711以及基本块BB8中包含的条件分支的一个分支方向BB810具有扩展控制依赖性。因此,BB12与以下两个分支方向分别连接。其中,一分支方向是与BB12通过表示控制依赖性或扩展控制依赖性的虚线边向基本块BB7中包含的条件分支的BB8及BB10延伸的分支方向不同的分支方向;另一分支方向是与通过上述虚线边向基本块BB8中包含的条件分支的BB9延伸的分支方向不同的分支方向。
这些边如上所述是属于OR关系,因此由虚线弧包束。需要说明的是,MTG中省略了箭头的边(edge)的朝向为向下。另外,带箭头的边表示初始的控制流程。
此外,从图6的MFG可知,不管基本块BB1等先行任务的条件分支向哪一分支延伸,基本块BB5是确定被执行的。因此,基本块BB5相对基本块BB1等先行任务中包含的条件分支的各分支方向BB12、BB15不具有控制依赖性。另外,基本块BB5相对先行任务不具有数据依赖性。因此,如图7的表中所示,基本块BB5的最早执行可能条件栏为空栏,图8的MTG中的基本块BB5上没有其他先行任务延伸来的边(edge)。这即表示BB5与其他任务或任务组能够并行地被执行。同样,在图6的MFG中,在基准任务BB7之后执行的基本块BB11、BB13也相对BB7中包含的条件分支的任一分支方向均不具有控制依赖性或扩展控制依赖性。因此,图7的表中的最早执行可能条件的栏为空栏,图8的MTG 中的基本块BB11、BB13上也不具有先行任务延伸来的边(edge)。
接着,应融合任务组决定部116根据MTG执行决定融合对象的任务组的应融合任务组决定处理(图2/STEP018)。将该图2/STEP018的具体步骤展开的流程图示于图9中。利用图9详细说明图2/STEP018处的处理内容。另外,为了具体进行该说明,准备图10中所示的MTG。该MTG是对以下任务进行了归总的图:这些任务连接在图8的MTG中的基本块BB7中包含的条件分支的所有分支方向的各个方向之后。以图10的MTG为基础进行的说明自然也适用于图8的MTG中的基本块BB1中所包含的条件分支的所有分支方向之后各自连接的任务。
以下,参照图9及图10详细说明应融合任务组决定处理。
应融合任务组决定部116参照MTG将以下任务指定为基准任务(图9/STEP202):相对其他的任务不具有数据依赖性、相对于其他任务中包含的条件分支的任一分支方向均不具有控制依赖性、扩展控制依赖性或间接控制依赖性且包含一个条件分支的任务。
作为将相对其他的任务不具有数据依赖性、相对于其他任务中包含的条件分支的任一分支方向均不具有控制依赖性、扩展控制依赖性或间接控制依赖性且包含一个条件分支的任务指定为基准任务的例子,可以举出运算处理要素110参照图10所示的MTG将基本块BB7指定为基准任务的处理。
接着,参照MTG,应融合任务组决定部116将基准任务和第1后续任务指定为任务组(图9/STEP204)。其中,上述第1后续任务是与基准任务中包含的条件任务的所有分支方向的各个任务具有控制依赖性或扩展控制依赖性的所述任务。需要说明的是,图9/STEP204的处理对应于本发明的“第1指定步骤”的一例。
从图10的例子来看,应融合任务组决定部116参照图10中所示的MTG,将基本块BB8、BB10和基本块BB12指定为第1后续任务。其中,上述基本块BB8、BB10相对于作为基准任务的基本块BB7的条件分支中由实线弧包束的分支方向、即以AND关系连结的分支方向具有控制依赖性;上述基本块BB12相对于作为基准任务BB7的基本块BB7的由虚线弧包束的其他分支方向具有扩展控制依赖性。需要说明的是,“基本块BB7的条件分支中由实线弧包束的分支方向、即以AND关系连结的分支方向”是按照MTG的制作方法将图6中的分支方向BB78分成多个进行显示的方向。另外,“基准任务BB7的由虚线弧包束的其他分支方向”是按照MTG的制作方法将图6中的分支方向BB711分成多个进行显示的方向。
接着,应融合任务组决定部116将基准任务和第1后续任务指定为任务组(图9/STEP204)。图9/STEP204相当于本发明的“第1指定步骤”。
应融合任务组决定部116参照MTG判定是否有相对于该被指定的任务组中包含的任务的条件分支的任一分支方向具有控制依赖关系或扩展控制依赖关系的任务存在(图9/STEP206)。
应融合任务组决定部116参照图10所示的MTG指定:基本块BB9相对于上述被指定的任务组中包含的基本块BB8包含的条件分支中朝向BB9的分支方向具有控制依赖关系。因此,应融合任务组决定部116在图9的STEP206中判定:有相对于该任务组中包含的任务所包含的条件分支的任一分支方向具有控制依赖关系或扩展控制依赖关系的任务存在、也即YES。由此,将该基本块BB9设定为第2后续任务。应该被注意的是,构成该第2后续任务的基本块BB9相对于基准任务BB7中包含的条件分支中朝向BB8的分支方向具有间接控制依赖关系。也即,指定第2后续任务的处理就是指定相对于基准任务中包含的条件分支的该分支方向具有间接控制依赖关系的任务的处理。
如上所述,当图9/STEP206的判定结果是YES时,应融合任务组决定部116将该第2后续任务(在图10的例子中是基本块BB9)追加到该任务组中(图9/STEP208)。需要说明的是,图9/STEP208的处理对应于本发明的“第2指定步骤”的一例。
在图9/STEP208之后,应融合任务组决定部116再次执行图9/STEP206,判定是否有存在相对于第2后续任务中包含的条件分支的任一分支方向具有控制依赖关系或者扩展控制依赖关系的任务存在。
应融合任务组决定部116参照例如图10所示的MTG判定:相对于追加了基本块BB9后的任务组中包含的条件分支的所有分支方向具有控制依赖关系或扩展控制依赖关系的任务不存在。
当图9/STEP206的判定结果是否定性的情况时(图9/STEP206··NO),应融合任务组决定部116将任务组决定为应融合任务组(图9/STEP210)。通过这种方式,图9/STEP206~STEP208重复执行的一系列处理对应于本发明的“控制步骤”的一例。
以上利用图9中更为详细的流程图,将从图8的MTG中提取出分别连接在基本块BB7及其所有分支方向的各个方向之后的任务的图10的MTG为例说明了图2/STEP018的“应融合任务组决定”的处理。该说明自然也能够适用于图8的MTG中的基本块BB1以及连接在该BB1中包含的条件分支的所有分支方向的各个方向之后的所有任务。例如,将图10中的基本块BB7、BB10、BB8、BB9和基本块BB12分别置换成图8的基本块BB1、BB4、BB2、BB3和基本块BB6,并以提取出了基本块BB7以及连接在该BB7所包含的所有的条件分支的各个分支之后的任务的图10为基础进行的说明也同样全部成立。也即,从图8的MTG中可以确认到有两个应融合任务组存在。
另外,也可以采用以下处理来取代图9/STEP202~STEP210的处理:应融合任务组决定部116例如判定所有任务的包含控制依赖性、扩展控制依赖性或间接控制依赖性的条件分支的任务,并基于该判定结果来决定应融合任务组。另外,也可以从任务的执行成本的观点出发,使得任务组包含数据依赖于该任务组的任务的方式来指定任务组。
接着,融合部113将在图2/STEP018中抽取的任务组作为“应融合任务组”融合成一个新任务(图2/STEP026)。
例如,融合部113参照图10或图8的MTG,通过融合包括图8的基本块BB1~BB4及基本块BB6的“应融合任务组”,生成新任务blockl。融合部113融合包括基本块BB7~BB10及基本块BB12的“应融合任务组”,生成新任务block2。其结果,生成包括这些新任务block1及block2、图8所示的基本块BB5、BB11及BB13的MTG。该MTG示于图14A中。
从图14A的MTG可知,这样就能够抽取进行融合而生成的新任务block1及block2等5个能够并行执行的任务。
接着,调度部114执行静态调度处理,使得能够匹配经过图2/STEP026而生成的MTG和前述的设定文件(包括PE的种类及数量、分组状况、存储器状况等信息)。需要说明的是,图2/STEP028的处理对应于本发明的“调度步骤”的一例。
例如,在设定文件CF中,假设多处理器系统的PE数是5,调度部114可以将5个任务分别分配给各个PE。另外,假设设定文件CF示出的PE数是2,运算处理要素110根据上述5个任务的执行成本,将该5个任务分配给这两个PE,使得这两个PE之间的执行成本的差较小。例如,调度部114可以将block1和BB5分配给构成第一个PE的PE1,将block2、BB11及BB13分配给构成第2个PE的PE2。
在上述说明的例子中,能够并行执行的任务数量是较少的3~5。但是在该数量增多的同时构成多处理器系统的PE的数量也增多时,不仅仅是根据上述PE的数量这种单纯的方式进行调度处理,同时还需要考虑各类条件,一般来讲调度处理方式变得复杂。
这里,可以采用专利文献1中示出的方法作为调度方法。该方法是:利用静态调度,以对应于各任务的层的方式将任务分配给任一处理部件PE或处理部件组PG的方法。
另外,在多处理器系统、特别是形成于半导体芯片上的多处理器系统中,多数在系统内部设置处理部件等工作电压通过软件为可变的机构。这时因为根据各个任务的执行状况对多处理器系统的工作电压进行最优设定,能够削减其电力消耗。运算处理要素110也可以将该推算的电力消耗设定成执行成本,基于该执行成本,选择构成执行各任务是合适的多处理器系统的处理部件等工作电压,并使处理部件PE或处理部件组PG在该工作电压下工作。需要说明的是,关于选择合适的工作电压的详细内容在日本专利第4082706号公报中有所记载。
此外,调度部114可以通过调试在具有依赖性的组之间的高速缓冲存储器的全局最优化,来进行高速缓冲存储器的最优化。另外,关于全局最优化的内容在日本专利第4177681号公报中有所记载。
这里,可以通过利用与专利文献1中公开的自动并行化API标准分析系统以及多处理器系统200的平台对应的运行时库等,可以较为简单地实现电压控制和高速缓冲存储器的最优化等。
生成部115基于调度的结果生成并行程序P2(图2/STEP028)。
生成部115基于设定文件CF中记载的信息,利用与多处理器系统的各种PE对应的后端编译器,根据并行程序(源代码)P2生成二进制代码PB(图2/STEP032)。该STEP032的处理也可以在多处理器系统200中被执行。需要说明的是,图2/STEP030或图2/STEP032的处理对应于本发明的“生成步骤”的一例。
通过以上处理,利用多处理器系统200生成能够并行执行的并行程序P2(以及其二进制代码PB)。运算处理要素110结束图2的流程中的并行化的一系列处理。
如上述说明,明显可知本发明的技术与现有技术相比能够抽取更多的能够并行执行的任务。而且,根据原来的顺序程序的状态和多处理器系统的构成,能够抽取更多的能并行执行的任务。以下说明其他例子。
在该例中,进一步对由图2的STEP018生成的“应融合任务组”进行能并行执行的任务的存在可能性的分析,并针对存在的场合和不存在的场合两种场合决定应融合任务组的处理的步骤,并将该步骤插入到紧跟着图2/STEP018的位置。通过这种方式制成的流程示于图3。图3的STEP002~STEP018以及STEP026~STEP032与图2的相同。
在该图3/STEP020~STEP024中,运算处理要素110进行以下判定:相对于“应融合任务组”中包含的基准任务的一个分支方向具有控制依赖性、扩展控制依赖性、甚至是间接控制依赖性的多个任务彼此之间既没有数据依赖性也没有控制依赖性的任务是否存在,当这种任务不存在时,就这样对应融合任务组实施融合处理,而当这种任务存在时,将上述多个任务看作能够并行执行。
与图2的处理流程的情况相同,以下以图8的MTG为例说明图3所示的该类情况的处理流程的例子。在该情况下,为了使说明更加清楚,将与图10同样地从图8的MTG提取出的基本块BB7作为开头的“应融合任务组”再次示于图11A中。图11A中的“应融合任务组”相对于图8中的“应融合任务组”虽然形式上进行了若干变更,但不更改其构成。以下利用该图11A进行说明。
在图3/STEP018“应融合任务组决定”处理结束后,条件判定部117执行下一个作为本发明的“条件判定步骤”的一例的图3/STEP020的判定“是否满足要复制的规定条件”的步骤。
上述基准任务以及连接在该基准任务之后的第1后续任务、第2后续任务等后续任务构成的任务组、也即说明至此的“应融合任务组”中包含的后续任务组中不存在能够并行执行的任务或任务组时,通过将包括上述基准任务、第1后续任务和第2后续任务的任务组融合到一个任务中,能够将具有条件分支的任务隐藏到一个被融合的任务中。这种情况最终与说明至此的图2的处理流程的结果相同,因此,以下以存在能够并行执行的任务或任务组的情况为中心进行说明。
当存在这样的任务或任务组时,融合部113复制以下数量的包含在基准任务中的条件分支,该数量是该能够并行执行的任务或任务组的数量减去1的数量。例如,当能够并行执行的任务或任务组的数量是3时,融合部113复制3-1=2个包含在基准任务中的条件分支,使得包括基准任务中包含的条件分支在内共有3个条件分支存在。并且,让该能够并行执行的任务连接在基准任务中包含的条件分支以及被复制的条件分支的各个条件分支之后,并通过将各个条件分支与连接在该条件分支之后的任务融合,使条件分支和该能够并行执行的任务让具有相同数量的多处理器系统的(多个)处理部件PE分别执行,从而增加并行度。
条件分支的复制处理的详细记载于日本特开2014-160453号公报中。在本发明中,通过结合图2的并行程序的生成处理流程,能够抽取更多的能够并行执行的任务。以下对其进行说明。
在以下的说明中,适当地把基准任务中包含的条件分支称为“对象条件分支”。
为了决定是复制后融合任务还是不进行复制而融合任务,条件判定部117判定要复制的规定条件是否满足(图3/STEP020)。
规定条件至少包括下述并行执行可能条件。该并行执行可能条件是指:相对于对象条件分支的多个分支方向中的一个分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的多个任务或任务组之间彼此不具有数据依赖性。这样,当相对于该一个分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的多个任务或任务组之间彼此不具有数据依赖性时,以下将该一个分支方向称为“对象分支方向”。另外,这里所说的“一个分支方向”是在进行最早执行可能条件分析之前的状态、例如图6的MFG中表述的状态下使用的表述。而在进行最早执行可能条件分析之后的状态、例如是图8的MTG中表述的状态下,上述“一个分支方向”也作为由实线弧包束的虚线边所表示(处于AND关系)的多个分支方向进行表述。自然,在MTG上也有作为“一个分支方向”的情况存在。并且,“对象分支方向”在MFG上有时也表示上述“一个分支方向”的情况,在MTG上有时也作为表示由实线弧包束的虚线边所示表示(处于AND关系)的多个分支方向的情况。
如图11A所示,基本块BB8、BB10相对于基本块BB7的条件分支中处于AND关系(由实线弧包束)的分支方向具有控制依赖性。另外,基本块BB9相对于基本块BB7的条件分支的朝向基本块BB8的分支方向具有间接控制依赖性。
此外,基本块BB12相对于基本块BB7中包含的条件分支的朝向基本块BB8的分支方向处于OR关系(由虚线弧包束)的不同分支方向具有扩展控制依赖性的关系。同时,基本块BB12相对于基本块BB8的条件分支中朝向基本块BB9的分支方向处于OR关系(由虚线弧包束)的不同分支方向具有扩展控制依赖性的关系。
当条件判定部117在图3/STEP020处判定满足规定条件(图3/STEP020··YES)时,融合部113复制能够并行执行的数量减去1后的数量的基准任务(图3/STEP022)。
这里,在具体说明条件分支或基准任务的复制之前,对“条件分支的复制”稍作挖掘说明。
包括构成复制对象的条件分支的基准任务中一般除了包含条件分支之外,还包含条件分支相对其是数据依赖关系的语句集合(collection of statements)、即用于设定决定条件分支的分支方向的语句的集合。将这类语句集合称为“条件设定语句群”。进一步地,基准任务除了包含条件分支之外,有时还包含相对其不是数据依赖关系的语句集合、即还包括有可能进行并行执行的语句的集合。同样,将这类语句的集合称为“有可能进行并行执行的语句群”。
这样,在条件分支(仅条件分支)被复制并在静态调度时该被复制的条件分支与后续任务(或任务组)一起被分配到不同的PE时,通过一个PE执行基准任务中的条件分支以外的语句(上述“条件设定语句群”和“有可能进行并行执行的语句群”),该执行结果(数据)被传送给处理被复制的条件分支和后续任务的PE。所以,在该情况下,执行结果传送所需的时间被追加到并行程序的处理时间之上。
另外,在复制基准任务整体的情况下,各PE分别执行条件设定语句群,因此,PE间无需进行数据传送,在并行程序的处理时间上不用追加数据传送的时间。但是,被分配了复制后的基准任务的PE均执行,存在电力消耗增大的可能性,因而这一点有所不利。另外,基准任务中存在有可能进行并行执行的语句群,而且,只要条件分支及条件设定语句群之间没有数据依赖性,可以与条件分支及条件设定语句群进行并行执行。所以,只要将有可能进行并行执行的语句群分配给与执行复制后的基准任务的PE不同的PE,能够减少并行程序的处理时间。
所以,将条件分支及条件设定语句群设定成新任务,以代替仅复制条件分支,通过这样的复制,各PE能够以最低限度的时间来进行条件分支的条件设定。而且,由于无需进行数据传送,与复制基准任务的情况相比,能够减少并行程序的处理时间。
鉴于上述情况,不单单是仅复制条件分支的情况,按照“条件分支及条件设定语句群”的复制和基准任务的复制(还包括不存在“有可能进行并行执行的语句群”的情况)而生成的条件分支的复制也对应于本发明的“条件分支的复制”的例子。
这里,再次回到图3/STEP022“条件分支的复制”的说明。
例如,在图11A所示的例子中,基本块BB8及BB9与基本块BB10彼此不具有数据依赖性,因此,连接在基本块BB7包含的条件分支的对象分支方向之后的并行执行可能数量是2。
融合部113仅复制数量是“1”的条件分支,其中,该条件分支是图11A所示的作为基准任务的基本块BB7中包含的条件分支;该数量“1”是并行执行可能数量“2”减去了1的数字。由此,融合部113如图11B所示生成即为基本块BB7的基准任务ST1、包含被复制的条件分支的基准任务ST2。
接着,融合部113使相对于对象条件分支的对象分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的任务或任务组连接在任一基准任务之后(图3/STEP024)。融合部113使相对于对象条件分支的对象分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的任务或任务组当中彼此不具有数据依赖性的任务或任务组连接在下述条件分支的对象分支方向之后。该条件分支是指还包括被复制的基准任务的各自不同的基准任务中包含的条件分支。
例如,在图11A中,基本块BB8及基本块BB10相对于基本块BB7中包含的条件分支的对象分支方向(图11A中由实线弧包束的分支方向)具有控制依赖关系,而基本块BB9及基本块BB12相对于该对象分支方向具有间接控制依赖关系。所以,BB8、BB9及BB12构成后续任务组FTG2,与FTG2不具有数据依赖性、控制依赖性的BB10构成后续任务组FTG1。并且,由于FTG1和FTG2能够并行执行,复制一个基准任务BB7并将其命名为ST2,把BB7本身改名为ST1。然后,使FTG1连接在ST1中包含的条件分支的对象分支方向之后,同时使FTG2连接在ST2包含的条件分支的对象分支方向之后。另外,在图11A的MTG中,基本块BB12相对与基本块BB7中包含的条件分支的对象分支方向不同的其他分支方向(不受实线弧包束的分支方向)具有扩展控制依赖关系。
像这样当相对于条件分支的两个分支方向(在该段落中,将这两个分支方向称为第1分支方向、第2分支方向。)均具有控制依赖性、间接控制依赖性或扩展控制依赖性的一个任务(在该段落中,称之为第1任务)存在时,运算处理要素110可以复制该第1任务而生成第2任务,将第1任务连接在一个条件分支的第1分支方向之后,将第2任务连接在其他条件分支的第2分支方向之后。或者取代上述方式,运算处理要素110也可以将第1任务连接在一个条件分支的第1分支方向之后,将第2任务连接在该一个条件分支的第2分支方向之后。具体来讲,在上述情况下,由于基本块BB12控制依赖于两个分支方向,运算处理要素110复制BB12,另外生成一个与包含在FTG2中的BB12相同的任务,并使其包含在相对于其他的分支方向的后续任务组FTG3中。并且,STG1的执行和STG2的执行能够分配给多处理器系统的不同处理部件。
对上述情况再略加详细说明。如图11B所示,后续任务组FTG1(本例中由BB10构成)相对于基准任务ST1包含的条件分支的该对象分支方向(图11A中与受实线弧包围的分支方向对应的分支方向)具有控制依赖性,而由于STl的其他分支方向上没有后续任务,运算处理要素110将STl和FTGl进行汇总而形成“应融合任务组”STGl。另外,同样如图11B所示,后续任务组FTG2(由基本块BB8、BB9及基本块BB12构成)相对于基准任务ST2包含的条件分支的该对象分支方向(图11A中与受实线弧包围的分支方向对应的分支方向)具有控制依赖性,并且由于后续任务组FTG3(本例中由BB1构成)相对于ST2的其他分支方向具有扩展控制依赖性,运算处理要素110将ST2、FTG2及FTG3进行汇总而形成“应融合任务组”STG2。BB12包含在FTG2及FTG3这两个后续任务组中的理由是:如图11A所示,BB12间接控制依赖于基准任务BB7(复制后的ST2)的条件分支的对象分支方向且同时扩展控制依赖于BB7的条件分支的并非是对象分支方向的其他的分支方向上。
这样,只要STG1内的基准任务ST1中包含的条件分支的分支方向确定是执行FTG1的分支方向,STG2内的基准任务ST2中包含的条件分支的分支方向也确定为执行FTG2的分支方向。只要ST1中包含的条件分支的分支方向确定是与执行FTG1的分支方向不同的其他的分支方向,基准任务ST2中包含的条件分支的分支方向也同样确定为其他的分支方向,执行FTG3。
需要说明的是,FGT3虽然是相对于基准任务ST2中包含的条件分支中与对象分支方向(FTG2所控制依赖的分支方向)不同的分支方向具有控制依赖性,但是也可以将FGT3连接在下述分支方向之后:即,任务组STG1的基准任务ST1中包含的条件分支中与对象的分支方向(FTG1所控制依赖的分支方向)不同的分支方向。即使设定成上述方式,也不违反本发明的基本内容。
这样,通过执行图3/STEP022及STEP024,能够从图11A的MTG(将图8的BB7作为基准任务包含其中的“应融合任务组”)中新抽取图11B所示的两个(能够并行执行的)任务组STG1及STG2。
以上利用图11A及图11B说明了从“应融合任务组”中抽取能够并行执行的任务组STG1及STG2的过程。其中,“应融合任务组”是从图8的MTG提取出的以BB7为基准任务而包含其中的任务组。同样,由于将图8的BB1作为基准任务而包含其中的“应融合任务组”与将BB7作为基准任务而包含其中的“应融合任务组”具有同样的构成,与图11A、图11B相同,能够新抽取两个能够并行执行的任务组(分别将其称为STG3,STG4)作为“应融合任务组”。
到此处为止,详细地说明了图3/STEP020处被判定为满足规定条件时(图3/STEP020··YES)的应融合任务组决定处理(图3/STEP018)。
然后,为了让运算处理要素110基于包括新抽取的“应融合任务组”的MTG进一步分析是否有能够并行执行的任务存在,返回到图3/STEP014的处理,再次通过图3/STEP020的处理。这时,假设作为任务复制的规定条件、即能够并行执行的任务或任务组不存在,则前进至图3/STEP026的融合处理。
例如,根据图8及图11A/图11B的说明,新抽取的“应融合任务组”STG1、STG2、STG3及STG4中没有进一步能够并行执行的任务存在,因此,对这些任务组进行融合处理,新生成4个任务。将这4个任务分别命名为block3、block4、block5及block6时,包括这些新生成的任务的MTG如图14B所示具有7个并行执行可能的任务数,与单纯进行任务融合的图14A的情况相比多出2个任务。另外与现有技术中的专利文献1中记载的任务融合方法相比多出4个任务。像这样当并行执行可能的任务数较多时,调度的自由度增加。
接着,与图2的处理流程的情况相同,运算处理要素110执行STEP028的调度处理并经过接下来的STEP030的并行程序(源代码)的生成、之后的STEP032的二进制代码的生成,结束所有的处理。STEP028以后的处理与图2中的说明相同,因此不作详细说明。通过将本发明适用到图8中后的并行执行可能的任务数增加到7个,如上所示,调度的自由度增加,能够实现更为有效的并行程序的生成。
到此处的说明为止,以图6的MFG所示的程序为例,详细地说明了本发明(图2及图3所示的并行化的处理流程)。作为另外一个例子,如图12所示,以与图6的MFG不同的MFG为例进行说明。在图12的MFG中,表示来自基本块BB4的控制流程的虚线朝向基本块BB6而不是基本块BB5,来自基本块BB10的控制流程朝向基本块BB12而不是基本块BB11。这一点与图6的MFG不同。
这时,基本块BB5控制依赖于基本块BB1的条件分支的分支方向BB15,基本块BB11控制依赖于基本块BB7的条件分支的分支方向BB711。
与图6的MFG的情况相同,依赖性分析部112对各任务的控制依赖性和该各任务间的数据依赖性的两者的依赖性进行分析,并利用该结果进行最早执行可能条件分析(图2或图3/STEP014)。其结果示于图13。比较图13和图7,在图7的最早执行可能条件的表中,BB5及BB11的栏为空栏,而在图13的最早执行可能条件的表中,BB5的栏中记载有BB15,在BB11的栏中记载有BB711。也即,根据比较可知,图13与图7相比,BB5及BB11上具有依赖性。
依赖性分析部112利用最早执行可能条件分析的结果,生成MTG(图2或图3/STEP016)。具体来讲,根据图12的MFG生成的MTG示于图15。根据该MTG可知,在通过图6的MFG生成的图8的MTG中,BB5及BB11相对于其他任务或任务组不具有依赖性,而在图15的MTG的情况中,BB5及BB11上出现了依赖性。因此,以图15的MTG为基础执行应融合任务组决定处理(图2及图3/STEP018)时,与以图8的MTG为基础进行处理的情况不同,BB5包含在以BB1为基准任务包含其中的“应融合任务组”内,BB11包含在以BB7为基准任务包含其中的“应融合任务组”内。该情况可以从图16中明显看出。其中,图16是提取以BB7为基准任务的应融合任务组并对其进行表示的图。所以,通过图2/STEP026的融合处理,以BB1为基准任务的应融合任务组被融合到新任务block1中,以BB7为基准任务的应融合任务组被融合到新任务block2中。这两个新任务和不具有依赖性的BB13一起生成图18A的MTG。根据该图可知,由于BB5和BB11分别被融合到block1及block2中,并行执行可能的任务数为3,这与图14A相比数量变少。
这里,将图3/STEP020~024适用到以图12的MFG或是图15的MTG为基础的“应融合任务组”中。为了说明简明,从图15的MTG中提取出以BB7为基准任务的应融合任务组示于图17A中。在该图中,BB11以下述方式被追加到图11A中而构成:除了连接在基准任务BB7的条件分支上具有AND关系的分支方向之后的FTG1(由BB10构成)及FTG2(由BB8、BB9及BB12构成)、以及连接在与上述分支方向不同的分支方向之后的FTG3(复制后的BB12)之外,BB11连接在与朝向FTG3的分支方向成AND关系的分支方向之后。并将该BB11表示成后续任务组FTG4。
根据上述说明可知,在连接于BB7之后的4个任务组FTGl~FTG4当中,FTG1和FTG2之间不具有数据依赖性,因此,两者能够进行并行执行,FTG3和FTG4之间同样不具有数据依赖性,这两者也能够进行并行执行。并且,FTG1/FTG2以及FTG3/FTG4连接在BB7的条件分支中具有OR关系的分支方向之后。
所以,在图3/STEP020中,融合部113判断应融合任务组中存在并行执行可能的任务或任务组时,在图3/STEP022处复制一个基准任务BB7,并称其为ST2(原先的基准任务BB7更名为ST1)。并且,在图3/STEP024中,运算处理要素110使FTG1连接在新生成的基准任务ST1的一个分支方向之后,使FTG4连接在与该一个分支方向不同的分支方向之后,使FTG2连接在与基准任务ST2的该一个分支方向对应的分支方向之后,并且使FTG3连接在与该一个分支方向不同的分支方向所对应的分支方向之后。这里,当ST1的条件分支的分支方向是执行FTG1的方向时,ST2的条件分支的分支方向即为执行FTG2的方向。当ST1的条件分支的分支方向是执行FTG4的方向时,ST2的条件分支的分支方向即为执行FTG3的方向。
接着,运算处理要素110(应融合任务组决定部116)返回到图3/STEP014的处理,经过STEP016的处理,在STEP018中重新进行应融合任务组决定处理。通过这种方式,基准任务ST1、后续任务组FTG1及FTG4融合成一个应融合任务组STG1,基准任务ST2、后续任务组FTG2及FTG3融合成另一个应融合任务组STG2。将该结果示于图17B的MTG中。在该情况下,应融合任务组STG1也可以是由ST1、FTG1及FTG3构成;而应融合任务组STG2可以是由ST2、FTG2及FTG4构成。也即,并行执行可能的后续任务组只要构成为不包含在同一应融合任务组中即可。
接着,在图3/STEP020处,运算处理要素110(条件判定部117及融合部113)判定应融合任务组STG1及STG2中是否进一步存在并行执行可能的任务,当判定是不存在时,进行STG1和STG2的融合处理(图3/STEP026)。即,STG1和STG2分别对应于通过融合而生成的任务block3及block4。
以上对包含基准任务BB7的应融合任务组进行了说明。针对包含基准任务BB1的应融合任务组也能够进行同样的处理。也即,只要将BB7对应于BB1、将BB8对应于BB2、将BB9对应于BB3、将BB10对应于BB4、将BB11对应于BB5、将BB12对应于BB6,图17A及图17B的MTG也能适用于包含BB1的应融合任务组。作为其结果,融合而生成任务block5、block6。
总结以上说明,图15的MTG形成图18B所示的融合处理的结果。根据该图可知,对图15的MTG进行包含基准任务的复制的图3/STEP020~STEP026的处理时的并行执行可能的任务数为5,同样与图14A的情况相比有所减少。这是因为受到图6及图12所示程序的特性影响而产生的。
(作用效果)
根据本实施方式的并行化程序C,并行化编译装置100(计算机)将图2及图3的STEP002~STEP032、特别是作为本发明特征的STEP018~STEP026处的用于进行并行化的任务融合的技术适用到通过图6及图12的MFG表示的顺序程序中,能够分别生成图14A/图14B以及图18A/图18B所示的MTG。此处的附图编号末尾带A的图示出了通过图2的处理流程生成的MTC,同样附图编号末尾带B的图示出了通过图3的处理流程生成的MTG。
另外,将作为现有技术的专利文献1的融合技术适用到图6及图12的MFG中生成的MTG分别示于图14C及图18C。
首先,比较图14A/B/C,图14A的并行执行可能的任务数是5(当中通过融合生成的任务数是2),图14C的并行执行可能的任务数是3(当中通过融合生成的任务数是2),适用本发明的情况下并行执行可能的任务数增多。另外,图14B的并行执行可能的任务数是7(当中通过融合生成的任务数是4),可以发现,适用组合了条件分支的复制技术的本发明(图3的例子)时,并行执行可能的任务数进一步增多。
另外,图18A/B/C也与图14A/B/C的情况相同。在图18A的例子中,并行执行可能的任务数是3;在图18B的例子中,并行执行可能的任务数是5;在图18C的例子中,并行执行可能的任务数是3。适用了图3的处理流程的情况(图18B)下,并行执行可能的任务数最多。并且,适用图2的处理流程的情况(图18A)和适用专利文献1的技术的情况(图18C)这两种情况下的并行执行可能的任务数相同。在适用到图12的MFG所表示的顺序程序中的情况下,图18A的例子中的block1及block2与图18C的例子中的block7及block8分别是相同的任务。图14A/C之间的差别是因为由图6的MFG表达的构成并行执行对象的顺序程序的构成的差异而引起的。像这样,根据作为并行化对象的顺序程序的构成不同,通过融合处理抽取的并行执行可能的任务数可能和现有技术中的相同,但是不会低于现有技术的任务数。
通过以上的整理可知,根据本发明的并行化编译程序,相比现有技术不会有损害(降低)抽取并行执行可能的任务的可能性的问题。
(变形方式)
在图2/STEP026中,生成了任务融合后的MTG。这时也可以再进行数据依赖性等分析,也可以基于任务融合前的数据依赖性等关系生成任务融合后的MTC。也即,假设融合前的任务组中包含的任一任务(称为任务T1)数据依赖性的任务(称为任务T2)存在。这时,融合了该任务组而生成的新任务(以下称为T3)也相对于任务T2具有数据依赖性。只要利用这种关系,在融合后无需再对任务间的数据依赖性进行分析。
(与专利文献1的对比)
以上已经对本发明相比专利文献1的优越性作了充分的说明。这里,参照由图19所示的4个任务构成的简单的顺序程序的MFG以及如图20所示的根据图16的MFG生成的MTG,再次对本发明相比专利文献1的优越性进行简单的说明。
首先,专利文献1的技术和本发明的技术从以下观点来看具有相同的目的:通过将连接在条件分支和其所有的分支方向的各个方向之后的所有的任务融合成一个任务,并将该任务分配给多处理器系统中的一个处理部件(静态调度),而在程序执行时无需进行调度处理。将包含这种条件分支的任务组融合成一个任务的情况如上所述因通过融合而无法看到任务中的条件分支,因此将该情况称为“隐藏条件分支”
但是,专利文献1和本发明之间在要融合的任务的范围上存在以下差异。后者具有以下明显的优点:能够更加简单地抽取与要融合的任务组不具有依赖性的任务作为并行执行可能的任务。根据前述例子说明该基本原理。
根据专利文献1的技术(本说明书的“背景技术”中说明的技术),在图19的MFG中,基于各任务间的控制依赖性(相当于本说明书中的“控制流程”)确定具有分支到不同任务的处理的任务BB101为开始任务,同时将以下任务中的任一任务SB104确定为结束任务,上述任务是指:以开始任务BB101为起点依次被执行的多个一系列处理的所有处理中共同被执行的任务。
并且,在专利文献1的技术中,将被确定的开始任务BB101、以开始任务为起点的处理中的结束任务SB104以及在开始任务BB101执行之后结束任务SB104执行之前被执行的所有任务、即SB102及SB103这4个任务融合成一个新任务。也即,在专利文献1中,被融合的任务是在图19中被点划线所包围的任务组TG1,并生成与该被融合的任务相同的如图19所示的新任务blockT1。并且,将任务融合后的MTG也示于同图中。
另一方面,根据本发明,在图2/STEP012中,在生成图19所示的MFG之后,执行图2/STEP014的最早执行可能条件分析。
在图19所示的MFG中,子程序块SB102控制依赖于基本块BB101的条件分支的分支方向BB101102。另外,子程序块SB103控制依赖于基本块BB101的条件分支的分支方向BB101103。
但是,不管是基本块BB101的条件分支的分支方向是BB101102还是BB101103,子程序块SB104均被执行。因此,子程序块SB104相对于基本块BB101的条件分支的分支方向BB101102及BB101103均不具有控制依赖关系和间接控制依赖关系。另外,子程序块SB104相对于子程序块SB102、SB103不具有数据依赖性的关系。因此,子程序块SB104相对于基本块BB101的条件分支的分支方向BB101102及BB101103均不具有扩展控制依赖关系。
基于这种最早执行可能条件分析,在图2/STEP016中生成图17所示的MTG。
接着,在图2/STEP018的应融合任务组的决定步骤中,在表示该步骤的详细流程的图9/STEP202中,任务BB101被确定为基准任务。并且,在图9/STEP204中,控制依赖、间接控制依赖或扩展控制依赖于任务BB101的条件分支的任务SB102、SB103被确定为第1后续任务,基准任务BB101和第1后续任务SB102、SB103被确定为任务组。并且,在图19的MFG中不存在与该任务组具有依赖性(数据依赖性或控制依赖性)的任务。也即,在本发明中,被融合的任务(本说明书中提到的“应融合任务组”)是图20中由两点划线所包围的任务组TG2。
另一方面,子程序块SB104如上所述相对于基本块BB101的条件分支的任一分支方向均不具有控制依赖、间接控制依赖及扩展控制依赖的关系。因此,在图2/STEP018的决定应融合任务组的步骤中,子程序块SB104并不包含在应融合任务组中。
并且,在图2/STEP026中,应融合任务组TG2融合而生成新任务blockT2。任务组TG2中如上所述不包含子程序块SB104。所以,融合后的MTG形成图20所示的形态。
比较图19及图20中的融合后的MTG明显可知,利用专利文献1的技术时抽取出的并行执行可能的任务数是1(图19),利用本说明书中的并行化技术时抽取出的并行执行可能的任务数是2(图20)。因而,本发明比专利文献1更能恰当地进行并行性的抽取。
Claims (6)
1.一种并行程序的生成方法,其是由计算机从顺序程序生成并行程序的方法,该并行程序能够在包括多个执行运算处理的运算处理部的系统中执行,该计算机具备存储并行化编译器的存储部和运算处理要素,所述运算处理要素通过执行所述并行化编译器而作为任务划分部、依赖性分析部和融合部发挥功能,该并行程序的生成方法的特征在于,
包括以下各步骤:
任务划分步骤,所述任务划分部将所述顺序程序划分为多个任务;
依赖性分析步骤,所述依赖性分析部通过分析由所述任务划分部划分出的所述多个任务,从而确定所述多个任务各自的数据依赖性和控制依赖性;和
融合步骤,所述融合部基于由所述依赖性分析部分析出的数据依赖性和控制依赖性,将包括所述多个任务中的具有条件分支的任务即基准任务和所有相对于该基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务即后续任务的任务组决定为应融合任务组,并将该应融合任务组融合成新任务。
2.根据权利要求1所述的并行程序的生成方法,其特征在于,
所述运算处理要素通过执行所述并行化编译器而作为调度部和生成部发挥功能,
所述并行程序的生成方法进一步包括以下各步骤:
调度步骤,所述调度部基于由所述依赖性分析部分析出的所述数据依赖性,进行调度,将包括所述新任务的多个任务的各个任务分配给所述多个运算处理部的各个运算处理部;和
生成步骤,所述生成部基于由所述调度部进行了调度的所述调度结果,生成所述并行程序。
3.根据权利要求2所述的并行程序的生成方法,其特征在于,
还包括:最早执行可能条件分析步骤,所述依赖性分析部基于在所述依赖性分析步骤包含的所述数据依赖性及控制依赖性的分析中获得的各任务间的数据依赖性和各任务的控制依赖性,分析所述多个任务的各个任务的最早执行可能条件。
4.根据权利要求1所述的并行程序的生成方法,其特征在于,
所述运算处理要素通过执行所述并行化编译器而作为应融合任务组决定部发挥功能,
所述并行程序的生成方法进一步包括以下各步骤:
第1确定步骤,所述应融合任务组决定部确定包括所述基准任务和所有相对于所述基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性或扩展控制依赖性的任务即第1后续任务的任务组;
第2确定步骤,所述应融合任务组决定部向所述任务组追加由所述应融合任务组决定部决定的所有第2后续任务,其中,所述第2后续任务是相对于所述任务组中包含的条件分支的所有分支方向的各个分支方向具有控制依赖性或扩展控制依赖性的任务;
控制步骤,所述应融合任务组决定部反复所述第2确定步骤直到相对于所述任务组中包含的条件分支的任一分支方向均具有控制依赖性或扩展依赖性的任务不存在;和
应融合任务组决定步骤,所述应融合任务组决定部将所述任务组决定为所述应融合任务组。
5.根据权利要求1所述的并行程序的生成方法,其特征在于,
所述运算处理要素通过执行所述并行化编译器而作为条件判定部发挥功能,
所述并行程序的生成方法进一步还包括以下各步骤:
条件判定步骤,所述条件判定部判定是否满足包括并行执行可能条件在内的规定条件的步骤,其中,所述并行执行可能条件是指:相对于所述应融合任务组中包含的所述基准任务包含的条件分支中的一个分支方向具有控制依赖性、间接控制依赖性或扩展控制依赖性的多个任务彼此之间不具有控制依赖性、间接控制依赖性、扩展控制依赖性以及数据依赖性;和
在所述条件判定步骤中判定为不满足所述规定条件时,所述融合部执行将所述应融合任务组融合成所述新任务的融合步骤,
在所述条件判定步骤中判定为满足所述规定条件时,所述融合部执行:复制所述基准任务中包含的条件分支的复制步骤;将彼此之间不具有控制依赖性、间接控制依赖性、扩展控制依赖性以及数据依赖性的所述多个任务连接在包含各个被复制的条件分支在内的多个条件分支的各个条件分支之后的后续步骤;对该多个条件分支的各个条件分支与连接在该多个条件分支的各个分支之后的所述多个任务进行组合而生成多个任务组,将该多个任务组决定为新的多个应融合任务组,并将该多个应融合任务组融合成各个所述新任务的步骤。
6.一种并行化编译装置,用于从顺序程序生成在具备执行运算处理的多个运算处理部的系统中能够并行执行的并行程序,该并行化编译装置的特征在于,具备:
任务划分部,其将所述顺序程序划分成多个任务;
依赖性分析部,其通过对由所述任务划分部划分出的所述多个任务进行分析,确定所述多个任务各自的数据依赖性和控制依赖性;和
融合部,其基于由所述依赖性分析部分析出的数据依赖性及控制依赖性,将包括所述多个任务中的具有条件分支的任务即基准任务和所有相对于该基准任务中包含的条件分支的所有分支方向的各个方向具有控制依赖性、扩展控制依赖性或间接控制依赖性的任务即后续任务的任务组决定为应融合任务组,并将该应融合任务组融合成新任务。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016255938 | 2016-12-28 | ||
JP2016-255938 | 2016-12-28 | ||
JP2017-178110 | 2017-09-15 | ||
JP2017178110A JP6600888B2 (ja) | 2016-12-28 | 2017-09-15 | 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108255492A true CN108255492A (zh) | 2018-07-06 |
Family
ID=60811889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711469305.7A Pending CN108255492A (zh) | 2016-12-28 | 2017-12-28 | 并行程序的生成方法以及并行化编译装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10698670B2 (zh) |
EP (1) | EP3343351B1 (zh) |
CN (1) | CN108255492A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213587A (zh) * | 2018-09-12 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | GPU平台下的多Stream并行DAG图任务映射策略 |
CN109460466A (zh) * | 2018-09-20 | 2019-03-12 | 电子科技大学 | 一种基于多任务双向长短时记忆网络的隐式句间关系分析方法 |
CN117149706A (zh) * | 2023-10-27 | 2023-12-01 | 山东大学 | 一种地震模拟数据的大规模并行优化方法及系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102491068B1 (ko) * | 2017-11-17 | 2023-01-19 | 에스케이하이닉스 주식회사 | 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템 |
WO2019118338A1 (en) * | 2017-12-11 | 2019-06-20 | Vfunction, Inc. | Systems and methods for mapping software applications interdependencies |
CN110032407B (zh) * | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
US20210081691A1 (en) * | 2019-09-16 | 2021-03-18 | SambaNova Systems, Inc. | Efficient Execution of Operation Unit Graphs on Reconfigurable Architectures Based on User Specification |
US11410027B2 (en) | 2019-09-16 | 2022-08-09 | SambaNova Systems, Inc. | Performance estimation-based resource allocation for reconfigurable architectures |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003323304A (ja) * | 2002-04-30 | 2003-11-14 | Fujitsu Ltd | 投機タスク生成方法および装置 |
CN101019084A (zh) * | 2005-04-12 | 2007-08-15 | 学校法人早稻田大学 | 多处理器系统以及多粒度并行化编译程序 |
US20120180067A1 (en) * | 2011-01-12 | 2012-07-12 | Kabushiki Kaisha Toshiba | Information processing apparatus and computer program product |
CN103377035A (zh) * | 2012-04-12 | 2013-10-30 | 浙江大学 | 针对粗颗粒度流应用的流水并行化方法 |
WO2014115613A1 (ja) * | 2013-01-23 | 2014-07-31 | 学校法人 早稲田大学 | 並列性の抽出方法及びプログラムの作成方法 |
JP2015001807A (ja) * | 2013-06-14 | 2015-01-05 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
JP2016143378A (ja) * | 2015-02-05 | 2016-08-08 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び、電子装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5539888A (en) * | 1993-12-23 | 1996-07-23 | Unisys Corporation | System and method for processing external conditional branch instructions |
US5812811A (en) * | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
US5822593A (en) * | 1996-12-06 | 1998-10-13 | Xerox Corporation | High-level loop fusion |
US6832370B1 (en) * | 2000-05-09 | 2004-12-14 | Hewlett-Packard Development, L.P. | Data speculation within modulo scheduled loops |
JP4196614B2 (ja) * | 2002-08-22 | 2008-12-17 | パナソニック株式会社 | 命令スケジューリング方法、命令スケジューリング装置、及びプログラム |
JP4177681B2 (ja) | 2003-02-20 | 2008-11-05 | 学校法人早稲田大学 | コンパイル方法、コンパイラ、およびコンパイル装置 |
EP1569104A3 (en) * | 2004-01-09 | 2006-05-03 | Interuniversitair Microelektronica Centrum Vzw | An automated method for performing parallelization of sequential code and a computerized system adapted therefore |
US7603546B2 (en) * | 2004-09-28 | 2009-10-13 | Intel Corporation | System, method and apparatus for dependency chain processing |
JP4923240B2 (ja) * | 2006-01-17 | 2012-04-25 | 国立大学法人東京工業大学 | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP4946323B2 (ja) * | 2006-09-29 | 2012-06-06 | 富士通株式会社 | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US8930926B2 (en) * | 2008-02-08 | 2015-01-06 | Reservoir Labs, Inc. | System, methods and apparatus for program optimization for multi-threaded processor architectures |
US8677338B2 (en) * | 2008-06-04 | 2014-03-18 | Intel Corporation | Data dependence testing for loop fusion with code replication, array contraction, and loop interchange |
WO2010033622A2 (en) * | 2008-09-17 | 2010-03-25 | Reservoir Labs, Inc. | Methods and apparatus for joint parallelism and locality optimization in source code compilation |
US8755515B1 (en) * | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US7979844B2 (en) * | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
JP5547208B2 (ja) * | 2008-11-24 | 2014-07-09 | インテル コーポレイション | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 |
US8060857B2 (en) * | 2009-01-31 | 2011-11-15 | Ted J. Biggerstaff | Automated partitioning of a computation for parallel or other high capability architecture |
US8667474B2 (en) * | 2009-06-19 | 2014-03-04 | Microsoft Corporation | Generation of parallel code representations |
US9348587B2 (en) * | 2010-07-09 | 2016-05-24 | Hyperion Core, Inc. | Providing code sections for matrix of arithmetic logic units in a processor |
US9529574B2 (en) * | 2010-09-23 | 2016-12-27 | Apple Inc. | Auto multi-threading in macroscalar compilers |
US8589901B2 (en) * | 2010-12-22 | 2013-11-19 | Edmund P. Pfleger | Speculative region-level loop optimizations |
US8793675B2 (en) * | 2010-12-24 | 2014-07-29 | Intel Corporation | Loop parallelization based on loop splitting or index array |
WO2012167933A1 (en) * | 2011-06-08 | 2012-12-13 | Hyperion Core Inc. | Tool-level and hardware-level code optimization and respective hardware modification |
JP6427054B2 (ja) * | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
-
2017
- 2017-12-22 EP EP17210290.7A patent/EP3343351B1/en active Active
- 2017-12-28 US US15/856,306 patent/US10698670B2/en active Active
- 2017-12-28 CN CN201711469305.7A patent/CN108255492A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003323304A (ja) * | 2002-04-30 | 2003-11-14 | Fujitsu Ltd | 投機タスク生成方法および装置 |
CN101019084A (zh) * | 2005-04-12 | 2007-08-15 | 学校法人早稻田大学 | 多处理器系统以及多粒度并行化编译程序 |
US20120180067A1 (en) * | 2011-01-12 | 2012-07-12 | Kabushiki Kaisha Toshiba | Information processing apparatus and computer program product |
CN103377035A (zh) * | 2012-04-12 | 2013-10-30 | 浙江大学 | 针对粗颗粒度流应用的流水并行化方法 |
WO2014115613A1 (ja) * | 2013-01-23 | 2014-07-31 | 学校法人 早稲田大学 | 並列性の抽出方法及びプログラムの作成方法 |
JP2015001807A (ja) * | 2013-06-14 | 2015-01-05 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
JP2016143378A (ja) * | 2015-02-05 | 2016-08-08 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び、電子装置 |
Non-Patent Citations (4)
Title |
---|
A.YOSHIDA 等: "A data-localization scheme using task-fusion for macro-dataflow computation", 《IEEE PACIFIC RIM CONFERENCE ON COMMUNICATIONS, COMPUTERS, AND SIGNAL PROCESSING. PROCEEDINGS》 * |
V. SARKAR: "Automatic partitioning of a program dependence graph into parallel tasks", 《IBM JOURNAL OF RESEARCH AND DEVELOPMENT》 * |
李凌: "支持依赖关系的并行任务软件框架研究与实现", 《安徽广播电视大学学报》 * |
黄春明: "面向多核系统的程序并行化方法", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213587A (zh) * | 2018-09-12 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | GPU平台下的多Stream并行DAG图任务映射策略 |
CN109213587B (zh) * | 2018-09-12 | 2021-11-09 | 中国人民解放军战略支援部队信息工程大学 | GPU平台下的多Stream并行DAG图任务映射策略 |
CN109460466A (zh) * | 2018-09-20 | 2019-03-12 | 电子科技大学 | 一种基于多任务双向长短时记忆网络的隐式句间关系分析方法 |
CN117149706A (zh) * | 2023-10-27 | 2023-12-01 | 山东大学 | 一种地震模拟数据的大规模并行优化方法及系统 |
CN117149706B (zh) * | 2023-10-27 | 2024-03-19 | 山东大学 | 一种地震模拟数据的大规模并行优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20180181380A1 (en) | 2018-06-28 |
EP3343351B1 (en) | 2023-04-26 |
EP3343351A1 (en) | 2018-07-04 |
US10698670B2 (en) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255492A (zh) | 并行程序的生成方法以及并行化编译装置 | |
US11693633B2 (en) | Methods and apparatus to detect and annotate backedges in a dataflow graph | |
EP2710467B1 (en) | Automatic kernel migration for heterogeneous cores | |
JP5842255B2 (ja) | プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法 | |
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
US7143388B1 (en) | Method of transforming software language constructs to functional hardware equivalents | |
US10965536B2 (en) | Methods and apparatus to insert buffers in a dataflow graph | |
WO2014115613A1 (ja) | 並列性の抽出方法及びプログラムの作成方法 | |
US8738349B2 (en) | Gate-level logic simulator using multiple processor architectures | |
US20120331278A1 (en) | Branch removal by data shuffling | |
US20090271774A1 (en) | System and method for the distribution of a program among cooperating processing elements | |
Steffen et al. | Improving simt efficiency of global rendering algorithms with architectural support for dynamic micro-kernels | |
US11467811B1 (en) | Method and apparatus for generating metadata by a compiler | |
US20230076473A1 (en) | Memory processing unit architecture mapping techniques | |
US20230004365A1 (en) | Multistage compiler architecture | |
He et al. | Shader components: modular and high performance shader development | |
JPH0816429A (ja) | 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置 | |
CN116089895A (zh) | 一种算子融合方法及装置 | |
Arasteh et al. | Improving parallelism in system level models by assessing PDES performance | |
TW201218008A (en) | Intelligent architecture creator | |
Li et al. | Gpu accelerated three-stage execution model for event-parallel simulation | |
Wang et al. | FineQuery: Fine-grained query processing on CPU-GPU integrated architectures | |
Huynh et al. | TP-PARSEC: A task parallel PARSEC benchmark suite | |
Bertacco et al. | On the use of GP-GPUs for accelerating compute-intensive EDA applications | |
Kanakia et al. | Espresso-gpu: blazingly fast two-level logic minimization |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180706 |
|
WD01 | Invention patent application deemed withdrawn after publication |