【技术实现步骤摘要】
【国外来华专利技术】用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统
一般来说,本公开涉及计算机系统,更具体来说,涉及用于将具有循环承载的依赖(loop-carrieddependence)的标量计算机程序循环向量化的方法和系统。
技术介绍
许多现代的计算机系统采用计算机程序向量化技术,例如优化计算机程序代码编译器以便将标量计算机程序向量化。向量化涉及将在代表单个数值的标量变量/操作数上操作的标量计算机程序循环转换成在代表数值集合的向量变量/操作数(例如,“k”个元素的向量包括“k”个值)上操作的向量计算机程序循环。常规编译器利用简单的变量扩展(即,用向量程序变量代替标量程序标量)来在不具有循环承载的依赖的标量计算机程序循环上执行向量化。附图说明图1A示出能够将标量计算机程序循环向量化的示例向量化系统的框图。图1B示出能够将具有字典反向循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1C示出能够将具有由递归循环操作引起的循环依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1D示出能够将具有交叉迭代存储器依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1E示出能够将具有由有条件执行的语句引起的循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图1F示出能够将具有由标量引用引起的循环承载的依赖的标量计算机程序循环向量化的示例向量化系统的框图。图2示出代表具有包含字典反向循环承载的依赖的标量计算机程序循环的示例计算机程序的示例伪代码。图3示出代表利用图1B的示例向量化系统创建的图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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。