[发明专利]一种基于重排指令融合的编译自动向量化方法在审
申请号: | 202111096907.9 | 申请日: | 2021-09-17 |
公开(公告)号: | CN113849180A | 公开(公告)日: | 2021-12-28 |
发明(设计)人: | 漆楚衡;冯竞舸;郑兆凯;李姝其 | 申请(专利权)人: | 中国科学院上海高等研究院 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 上海智信专利代理有限公司 31002 | 代理人: | 杨怡清 |
地址: | 201210 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 重排 指令 融合 编译 自动 量化 方法 | ||
本发明提供一种基于重排指令融合的编译自动向量化方法,包括:初始化一向量数据流;收集一个基本块中的Store指令,并按照访问的数据类型以及地址连续性来分组,形成若干个Store指令组;以所有Store指令组作为种子指令组加入同一个向量数据流,对Store指令组赋予索引;以构造的向量数据流为起点,构造所有可行的向量数据流,并从中选择最优的向量数据流;判断最优的向量数据流的代价如果大于0,则放弃向量化;否则,进行向量化变换。本发明的方法将基本块内所有种子指令组纳入同一向量数据流,可以一次向量化一个基本块并且可以发现不同种子指令组间的并性行,为程序生成具有更高向量化因子的程序,进一步提升程序的吞吐量。
技术领域
本发明属于编译优化领域,其涉及一种编译自动向量化方法,具体涉及一种基于重排指令融合的编译自动向量化方法。
背景技术
CPU设计技术经历了长足地发展,单纯以提高主频的方式提升CPU性能的模式已经变得困难,利用并行性成为了提升CPU性能的重要途径。现代CPU能够通过特殊设计的硬件模块利用多种形式的并行性,如流水线与SIMD(Single Instruction Multiple Data,单指令流多数据流)扩展部件。例如,1996年,Intel率先在处理器中集成SIMD扩展部件,此后一直都在改进SIMD扩展部件,包括向量寄存器长度和指令集等,先后出现了MMX(Multi MediaeXtension,多媒体扩展指令集),SSE(StreamingSIMD Extensions,单指令多数据流扩展指令),AVX(Advanced Vector Extensions,高级矢量扩展指令集)和IMCI(Initial Many-Core Instructions,初始众核指令集)。
目前,CPU利用的并行性包括任务级并行(Task Level Parallelism),指令级并行(Instruction Level Parallelism)和数据级并行(Data Level Parallelism)。
目前,多核CPU往往通过增加多组独立的计算核心的方式提升CPU整体性能,增强了系统的任务级并行。但是一味地增加CPU核心数的方式并不可取,各个核心间数据通信的成本会随着核心数量的增加急剧增加。
指令级并行指的是单个核心内部所执行的指令流中相邻指令间存在的并行性,衡量CPU指令级并行性的性能指标是每周期执行指令数(Instructions Per Cycle,IPC)。现代CPU发展出了流水线技术,将指令的执行过程分为若干阶段,在同一时刻允许不同指令处在不同的执行阶段。
数据级并行是另一种存在于单个核心内的并行性。假定程序中存在大量同类型的运算,在不影响程序语义的前提下可以交换这些运算指令的顺序。如果能够将相同类型的运算指令集中一处,同时执行这些指令,程序的性能将得到提升。因为数据级并行性与CPU处理数据的规模相关,衡量CPU处理数据级并行的能力的性能指标是吞吐量(Throughput),即单位时间内CPU处理的数据的规模。对于计算密集型程序,程序的性能瓶颈一般受到CPU吞吐量的限制,数据级并行是提升这类程序性能的重要手段。
向量化计算是一种特殊的并行计算的方式,相比于一般程序在同一时间只执行一个操作的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量。
超字并行(Superword Level Parallelism,简写SLP)是数据级并行中一个应用较广的方法。超字并行向量化方法是在基本块内寻找指令并行机会,其过程是寻找基本块内相邻的内存访问,将其配对并打成向量化的包,再根据定义使用(Define-Use,DU)链和使用定义(Use-Define,UD)链将包扩展,然后按照向量化的要求组合同构操作,生成向量化代码。在具体实现时,将循环按照一定的迭代次数展开,寻找并将地址连续的数据打包作为向量来处理,再将程序中的同构语句用向量指令代替。还可将不同循环的语句合并到同一个基本块内,这样即可实现迭代间的语句并行,又可实现迭代内的指令并行,因此也就可实现迭代间和迭代内的数据SIMD向量化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院上海高等研究院,未经中国科学院上海高等研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111096907.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种三角焊带涂锡装置
- 下一篇:一种防潮除湿双电源配电柜