[发明专利]一种开发循环代码中潜在可向量化循环的方法有效
申请号: | 201911243343.X | 申请日: | 2019-12-06 |
公开(公告)号: | CN111124415B | 公开(公告)日: | 2022-02-01 |
发明(设计)人: | 刘松;伍卫国;屈彬;王倩;马洁 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F17/16 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 李晓晓 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 开发 循环 代码 潜在 量化 方法 | ||
本发明公开了一种开发循环代码中潜在可向量化循环的方法,根据伯恩斯坦条件扫描获取循环代码中的数据依赖,根据读写顺序判断数据依赖的初始类型,采用定位三元组分别表示数据依赖源语句的位置和数据依赖目标语句的位置,计算距离向量并根据距离向量划分数据依赖类型,然后通过对自反依赖语句进行数据缓冲和对交叉依赖语句进行重排,采用数据缓冲消除自反依赖,采用语句重排消除交叉依赖,将部分原本不能够被编译器自动向量化的循环转换为可被向量化的循环,本发明通过形式化算法减小循环代码中数据依赖对向量化的影响,该方法能够有效提高程序向量化效率,提高程序在向量处理器上执行的性能,且操作性良好。
技术领域
本发明属于编译优化领域,特别涉及一种开发循环代码中潜在可向量化循环的方法。
背景技术
向量计算是一种SIMD(Single Instruction Stream,Multiple Data Stream)并行计算方式,使一条指令同时处理多份数据,以提高程序并行度及性能,从而减小计算成本并产生经济效益。由于高性能、大数据、人工智能等应用类型往往具有对大规模数据执行相同逻辑运算的特征,向量计算能够给这些应用带来显著的加速效果。随着第一代商用向量处理器——英特尔奔腾2(Intel Pentium II)于1996年问世,向量计算功能逐渐成为通用处理器的标配。除向量处理器外,硬件制造商们还开发了一系列的向量计算指令集以便于程序员在软件开发中使用向量计算技术,例如MMX、SSE和AVX等。而主流编译器,如GCC、LLVM-Clang、ICC等,也在逐步支持自动向量化功能,在编译预处理阶段将可向量化的循环代码自动使用向量指令实现。自动向量化给程序员带来了极大的方便,即使是不了解体系结构和向量指令的程序员也可以轻松写出向量化的代码。然而在常见应用的程序代码中,部分循环存在跨迭代依赖,而对存在跨迭代依赖的循环进行向量化可能导致错误的计算结果,因此有大量的循环因为存在跨迭代依赖而不能被向量化。为了充分利用向量处理器的优势,可通过一定的循环变换技巧来避免部分跨迭代依赖对计算结果正确性的破坏,以使尽可能多的循环被向量化,从而提升程序性能。在处理跨迭代依赖方面,现有的多面体编译优化技术通过仿射调度在提高程序并行度的同时又不使跨迭代依赖破坏计算结果的正确性。但仿射调度通常适用于MIMD(Multiple Instruction Stream,Multiple Data Stream)并行方式,在实际程序代码中实施仿射变换往往需要加入分支语句,导致程序对多份数据的逻辑操作不一致,因此不能用于开发潜在可向量化循环。目前,以有效开发潜在可向量化循环为目标的循环变换通常基于程序员的经验手动实现,编程难度较大且容易忽略部分潜在可向量化循环,缺乏一种有效方法来指导这一变换过程。
发明内容
本发明的目的在于提供一种开发循环代码中潜在可向量化循环的方法,以克服现有方法在开发潜在可向量化循环过程编译难度大的问题。
为达到上述目的,本发明采用如下技术方案:
一种开发循环代码中潜在可向量化循环的方法,包括以下步骤:
步骤1)、检测数据依赖:根据伯恩斯坦条件扫描获取循环代码中的数据依赖,根据读写顺序判断数据依赖的初始类型;
步骤2)、数据依赖模型化:通过定位三元组分别表示数据依赖源语句的位置和数据依赖目标语句的位置,计算数据依赖源语句至数据依赖目标语句的距离向量,根据距离向量获取数据依赖的迭代类型,建立由数据依赖源语句、数据依赖目标语句、定位三元组、距离向量、数据依赖的初始类型及数据依赖的迭代类型构成的初始依赖表;
步骤3)、对初始依赖表进行数据缓冲:扫描初始依赖表,若初始依赖表存在自反依赖,且该自反依赖的源/目标语句之间不存在自正依赖,则将该自反依赖复制插入到该自反依赖的源/目标语句代码下方,同时通过缓冲数组分别替换自反依赖中的写数组以及复制的该自反依赖中的读数组,更新依赖表并重新执行步骤3)直至初始依赖表中不存在自反依赖;若不存在自反依赖,则进入步骤4);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911243343.X/2.html,转载请声明来源钻瓜专利网。