当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统技术方案

技术编号:12165936 阅读:65 留言:0更新日期:2015-10-08 01:11
公开了用于将具有循环承载的依赖的标量计算机程序循环转换为向量计算机程序循环的方法和系统。一种示例方法和系统生成与第一有条件执行的语句相关联的第一谓词集合。第一谓词集合包含使得在通过第一有条件执行的语句定义变量时或在此之前在标量计算机程序循环中定义该变量的谓词的第一集合。该方法和系统还生成与第一有条件执行的语句相关联的第二谓词集合。第二谓词集合包含使得在通过第一有条件执行的语句定义该变量时或在此之前在标量计算机程序循环中使用该变量的谓词的第二集合。该方法和系统确定第二谓词集合是否是第一谓词集合的子集,并且基于该确定,将该变量的向量的元素中的向量值传播给向量的随后元素。

【技术实现步骤摘要】
【国外来华专利技术】用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统
一般来说,本公开涉及计算机系统,更具体来说,涉及用于将具有循环承载的依赖(loop-carrieddependence)的标量计算机程序循环向量化的方法和系统。
技术介绍
许多现代的计算机系统采用计算机程序向量化技术,例如优化计算机程序代码编译器以便将标量计算机程序向量化。向量化涉及将在代表单个数值的标量变量/操作数上操作的标量计算机程序循环转换成在代表数值集合的向量变量/操作数(例如,“k”个元素的向量包括“k”个值)上操作的向量计算机程序循环。常规编译器利用简单的变量扩展(即,用向量程序变量代替标量程序标量)来在不具有循环承载的依赖的标量计算机程序循环上执行向量化。附图说明图1A示出能够将标量计算机程序循环向量化的示例向量化系统的框图。图1B示出能够将具有字典反向循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1C示出能够将具有由递归循环操作引起的循环依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1D示出能够将具有交叉迭代存储器依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1E示出能够将具有由有条件执行的语句引起的循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1F示出能够将具有由标量引用引起的循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图2示出代表具有包含字典反向循环承载的依赖的标量计算机程序循环的示例计算机程序的示例伪代码。图3示出代表利用图1B的示例向量化系统创建的图2的示例标量计算机程序循环的示例向量化版本的示例伪代码。图4示出代表具有由递归循环操作引起的循环承载的依赖的示例标量计算机程序循环的示例伪代码。图5示出供示例代码生成器用于将具有由递归循环操作引起的循环承载的依赖的计算机程序循环向量化的示例伪代码。图6示出代表利用图1C的示例向量化系统创建的图4的示例标量计算机程序循环的示例向量化版本的示例伪代码。图7示出代表具有循环承载的交叉迭代存储器依赖的示例标量计算机程序的示例伪代码。图8示出代表利用图1D的示例向量化系统创建的图7的示例标量计算机程序循环的示例向量化版本的示例伪代码。图9示出代表具有由有条件执行的语句引起的循环承载的依赖的示例标量计算机程序的示例伪代码。图10示出代表利用图1E的示例向量化系统创建的图9的示例标量计算机程序循环的示例向量化版本的示例伪代码。图11示出代表具有由标量引用引起的循环承载的依赖的示例标量计算机程序的示例伪代码。图12示出代表利用图1F的示例向量化系统创建的图11的计算机程序循环的示例向量化版本的示例伪代码。图13示出代表由图1B的示例向量化系统执行以便将具有字典反向循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例流程图。图14A和14B示出代表由图1B的示例向量化系统执行以便将具有字典反向循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例伪代码。图15A-15C示出代表由图1C的示例向量化系统执行以便将具有由递归循环操作引起的循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例流程图。图16A-16C示出代表由图1C的示例向量化系统执行以便将具有由递归循环操作引起的循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例伪代码。图17A和17B示出代表由图1D的示例向量化系统执行以便将具有循环承载的交叉迭代存储器依赖的标量计算机程序循环向量化的示例机器可读指令的示例流程图。图18A和18B示出代表由图1D的示例向量化系统执行以便将具有循环承载的交叉迭代存储器依赖的标量计算机程序循环向量化的示例机器可读指令的示例伪代码。图19A和19B示出代表由图1E的示例向量化系统执行以便将具有由有条件执行的语句引起的循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例流程图。图20A和20B示出代表由图1E的示例向量化系统执行以便将具有由有条件执行的语句引起的循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例伪代码。图21A和21B示出代表由图1F的示例向量化系统执行以便将具有由标量引用引起的循环承载的依赖的标量计算机程序循环向量化的示例机器可读指令的示例流程图。图22A和22B示出代表由图1F的示例向量化系统执行以便将具有由标量引用引起的循环承载的依赖的计算机程序循环向量化的示例机器可读指令的示例伪代码。图23是可执行图13、14A-14B、15A-15C、16A-16B、17A-17B、18A-18B、19A-19B、20A-20B、21A-21B和22A-22B的示例机器可读指令以便实现图1A、1B、1C、1D、1E和1F的示例向量化系统的示例处理系统的框图。在可能的情况下,附图和随附书面描述中将使用相同的参考数字来表示相同或类似部分。具体实施方式本文中所公开的示例设备、方法、系统和制品允许将具有循环承载的依赖的标量计算机循环向量化。在一些示例中,这些方法和系统使得能够通过利用计算机程序代码、应用和/或服务来进行这样的向量化,其中计算机程序代码、应用和/或服务包括与可在具有支持对具有运行时数据依赖的循环的推测性向量化的硬件/软件的体系结构(例如,MacroscalarTM或类似体系结构)中使用的计算机语言相关联的计算机代码。向量化允许在同一时间执行标量计算机程序循环的多个迭代,从而提高速度和操作效率。为了使得能够进行并行循环迭代,将标量计算机程序循环中的每个标量变量转换成代表各自存储在不同向量元素中的数值的集合的向量变量(例如,具有“k”个元素的向量存储“k”个数值)。(以此方式转换这些变量有时称为标量扩展。)向量变量的每个向量元素对应于不同的循环迭代,从而使得第一向量元素包含在第一迭代期间计算的第一值,第二向量元素包含在第二迭代期间计算的第二值,等等。一般来说,倘若循环中的一个或多个指令不是以使得产生回路的方式取决于循环中的一个或多个其它指令,那么可以并行迭代标量计算机程序循环(即,将其向量化)。例如,当在循环的一个迭代中计算的变量的值取决于在循环的另一个或相同迭代中计算的变量的值时,存在计算机程序循环的两个指令或变量之间的依赖。在一个迭代中计算的变量值取决于在之前的不同迭代中计算的变量值时的情况下,依赖描述为“交叉”循环迭代(又称为循环承载的交叉迭代依赖)。在一个迭代中计算的变量值取决于在相同迭代中计算的变量值时的情况下,依赖称为循环承载的迭代内依赖。除了表征为交叉迭代或内迭代之外,依赖还可以表征为以下两种一般类型之一:1)控制依赖,和2)数据依赖。当基于一个或多个有条件执行的语句时,存在控制依赖(又称为条件依赖)。例如,包含在一个循环迭代中有条件地定义、然后在相同或不同循环迭代中无条件地使用或由不同条件保护的标量的计算机程序循环是一种类型的条件依赖。相比之下,当循环的一个语句或指令(在本文中可互换使用)必须相对于循环中的另一个语句按照特定顺序执行时,可能会出现两个循环迭代之间的数据依赖。如果这些语句不按该特定顺序执行,那么可能会错误地计算供循环使用的标量变量的值。例如,应当先通过写入语句定义在计算机程序循环中使用的标量本文档来自技高网...

【技术保护点】
一种用于将具有由有条件定义的标量变量引起的循环承载的依赖的标量计算机程序循环转换成向量计算机程序循环的系统,所述系统包括:谓词集合生成器,用于:  生成与第一标量计算机程序指令相关联的第一谓词集合,所述第一谓词集合包含使得在所述第一标量计算机程序指令处或之前定义标量变量的谓词;  生成与所述第一标量计算机程序指令相关联的第二谓词集合,所述第二谓词集合包含使得在所述第一标量计算机程序指令之后使用所述标量变量的谓词;传播器,用于:  确定所述第二谓词集合是否是所述第一谓词集合的子集;以及  响应于确定所述第二谓词集合不是所述第一谓词集合的子集,将向量的元素中的值传播给所述向量的随后元素,所述向量通过将所述标量变量转换成向量变量而形成。

【技术特征摘要】
【国外来华专利技术】1.一种用于将具有由有条件定义的标量变量引起的循环承载的依赖的标量计算机程序循环转换成向量计算机程序循环的系统,所述系统包括:谓词集合生成器,用于:生成与第一标量计算机程序指令相关联的第一谓词集合,所述第一谓词集合包含使得在所述第一标量计算机程序指令处或之前定义标量变量的谓词;生成与所述第一标量计算机程序指令相关联的第二谓词集合,所述第二谓词集合包含使得在所述第一标量计算机程序指令之后使用所述标量变量的谓词;传播器,用于:确定所述第二谓词集合是否是所述第一谓词集合的子集;以及响应于确定所述第二谓词集合不是所述第一谓词集合的子集,将向量的元素中的值传播给所述向量的随后元素,所述向量通过将所述标量变量转换成向量变量而形成。2.如权利要求1所述的系统,其中所述谓词集合生成器还用于:将控制所述第一标量计算机程序指令的执行的第一谓词添加到所述第一谓词集合;以及将所述第二谓词集合初始化为空集合。3.如权利要求2所述的系统,还包括用于将控制第二标量计算机程序指令的执行的第二谓词添加到所述第二谓词集合的边缘移除器。4.如权利要求2所述的系统,还包括边缘移除器,用于:确定所述第一标量计算机程序指令和第二标量计算机程序指令之间的边缘是否是所述标量变量上的循环承载的字典反向逆依赖边缘;以及如果确定所述边缘是所述标量变量上的循环承载的字典反向逆依赖边缘,那么将控制所述第二标量计算机程序指令的执行的第二谓词添加到所述第二谓词集合。5.如权利要求2所述的系统,还包括用于将控制第二标量计算机程序指令的执行的第二谓词添加到所述第一谓词集合的边缘移除器。6.如权利要求2所述的系统,还包括边缘移除器,用于:确定所述第一标量计算机程序指令和第二标量计算机程序指令之间的边缘是否是所述标量变量上的输出依赖边缘;以及如果确定所述边缘是输出依赖边缘,那么将控制所述第二标量计算机程序指令的执行的第二谓词添加到所述第一谓词集合。7.如权利要求1所述的系统,其中所述传播器将利用传播指令来传播所述值,并且其中所述传播器在通过将所述第一标量计算机程序指令转换成所述向量计算机程序指令而形成的向量计算机程序指令之后插入所述传播指令。8.如权利要求1所述的系统,其中所述值是第一值,并且所述元素是第一元素,所述系统还包括:选择器,用于选择来自所述向量中的第二元素的第二值,所述第二值在第一迭代中选择;以及广播器,用于在第二迭代中用所述选择的值填充所述向量的所有元素。9.如权利要求8所述的系统,其中所述第二元素是所述向量中的最后的元素。10.一种用于将具有由有条件定义的标量变量引起的循环承载的依赖的标量计算机程序循环转换成向量计算机程序循环的方法,所述方法包括:生成与第一标量计算机程序指令相关联的第一谓词集合,所述第一谓词集合包含使得在所述第一标量计算机程序指令处或之前在所述标量计算机程序中定义所述标量变量的谓词;生成与所述第一标量计算机程序指令相关联的第二谓词集合,所述第二谓词集合包含使得在所述第一标量计算机程序指令之后在所述标量计算机程序循环中使用所述标量变量的谓词;确定所述第二谓词集合是否是所述第一谓词集合的子集;以及响应于确定所述第二谓词集合不是所述第一谓词集合的子集,将向量的元素中的值传播给所述向量的随后元素,所述向量通过将所述标量变量转换成向量变量而形成。11.如权利要求10所述的方法,还包括:将控制所述第一标量计算机程序指令的执行的第一谓词添加到所述第一谓词集合;以及将所述第二谓词集合初始化为空集合。12.如权利要求11所述的方法,还包括:将控制第二标量计算机程序指令的执行的第二谓词添加到所述第二谓词集合。13.如权利要求11所述的方法,还包括:确定所述第一标量计算机程序指令和第二标量计算机程序指令之间的边缘是否是所述标量变量上的循环承载的字典反向逆依赖边缘;以及如果确定所述边缘是所述标量变量上的循环承载的字典反向逆依赖边缘,那么将控制所述第二标量计算机程序指令的执行的第二谓词添加到所述第二谓词集合。14.如权利...

【专利技术属性】
技术研发人员:J布哈拉瓦N瓦苏德范A哈托诺SS巴格索克希
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1