基于编译实现的可扩展向量掩码功能的方法和装置制造方法及图纸

技术编号:27562492 阅读:19 留言:0更新日期:2021-03-09 22:05
本发明专利技术公开一种基于编译实现的可扩展向量掩码功能的方法和装置,包括以下步骤:S1、编译器输入用户程序,根据目标平台翻译出正确的掩码向量接口;S2、编译器前端模块对S1中获得的掩码向量接口进行关键字识别,选择对应平台的中端处理入口;S3、编译器中端模块根据目标平台的指令结构对掩码向量接口进行分析,选择合适的处理流程;S4、编译器后端模块将编译器中端模块生成的中间生成代码转换生成最终指令;S5、编译器根据向量宽度的增加,完成对平台向量宽度的识别,选择合适宽度的向量转换和掩码生成。本发明专利技术降低了重新开发代码的工作量和复杂度及用户移植的复杂度,更进一步的挖掘了课题的指令级并行性能。课题的指令级并行性能。课题的指令级并行性能。

【技术实现步骤摘要】
基于编译实现的可扩展向量掩码功能的方法和装置


[0001]本专利技术涉及一种基于编译实现的可扩展向量掩码功能的方法和装置,属于计算机


技术介绍

[0002]目前对于程序的指令级并行的开发是提高程序运行性能的一种主流手段,向量指令被广泛用于提升课题的指令集并行优化上,且达到很不错的性能加速。随着处理器技术的发展,向量寄存器的宽度也呈现倍数增长关系,512bit的向量寄存器已经成为了主流,相当于16倍32bit字的宽度。在使用完宽度整向量的情况下,性能能够达到最佳,但是很多课题的计算不可避免会有非连续的访存和计算,传统的全向量访存和计算已经不能适应该类课题,需要开发一种新的指令并行模式,带屏蔽码的向量指令应运而生,该技术为挖掘不连续向量操作提供了一种有效的手段。
[0003]目前的主流的x86指令集对应的硬件和软件链中,对该类向量屏蔽指令和接口有着非常完善的配套,也被各种主流开源编译器所支持,例如GCC和LLVM中均有对应的接口支持。但是该技术通常基于硬件实现的具体指令,一方面依赖于具体处理器平台,另一方面在应用设计层面不具备可扩展行上。这对课题的性能以及程序的可移植性都是一种损失。
[0004]目前对于带掩码计算的功能调用,需要硬件平台做相应的支持,掩码位作为一个独立的寄存器或者操作位成为指令的输入参数,且只有在向量掩码指令支持的硬件平台上才能做该计算以及相应的扩展操作,这就对掩码功能的向量计算的适应面做了一个限制。
[0005]Intel公司对带掩码的向量指令有着一套完备的设计和系统,主要是通过该类硬件指令集来支持用户程序中的不完整向量计算和操作,虽然不能达到完整的可向量化性能提升,但是这对程序的可向量化挖掘提供了极大的潜能;同时随着向量寄存器宽度的增加,对这种非完整向量性能的关注度也越来越高。
[0006]但是目前主流的处理器对于向量掩码的指令的调用均采用都需要硬件平台做相应的掩码指令支持,例如intel avx向量指令集里,对向量指令做了mask的扩展,即在用户的使用该指令的调用接口时,必须直接或者间接的带有mask输入参数。使用这种向量接口的调用就对程序的移植提出了挑战,即需要在所移植新的平台里找到合适的替代接口或者功能,也增加了用户开发的复杂度并降低了开发和运行效率。

技术实现思路

[0007]本专利技术的目的是提供一种基于编译实现的可扩展向量掩码功能的方法和装置,该基于编译实现的可扩展向量掩码功能的方法和装置降低了重新开发代码的工作量和复杂度及用户移植的复杂度,更进一步的挖掘了课题的指令级并行性能。
[0008]为达到上述目的,本专利技术采用的技术方案是:一种基于编译实现的可扩展向量掩码功能的装置,其特征在于:包括以下模块:编译器预处理模块,用于提供一种通用带掩码向量操作接口说明,并在头文件中进行
描述,还用于提供一种基于平台架构的专用向量掩码操作接口说明;编译器前端模块,用于对经过预处理后的接口,进行识别和词法语法分析,根据不同的平台指令集选择不同的中端处理入口;编译器中端模块,用于对无硬件掩码指令的平台,进行中间代码级的全向量指令展开、抽取和拼接转换操作,还用于对有掩码指令的平台,进行内部对应编译器内置函数直接调用转换,还用于进行基于编译器中间表示的自动向量化代码转换优化,以提升自动向量化能力;编译器后端模块,用于完成对中间代码到汇编输出的转换。
[0009]基于上述基于编译实现的可扩展向量掩码功能的装置,本专利技术还提供了一种基于编译实现的可扩展向量掩码功能的方法,其特征在于:包括以下步骤:S1、编译器输入用户程序,通过预处理模块进行掩码向量优化预处理,根据目标平台翻译出正确的掩码向量接口;S2、编译器前端模块对S1中获得的掩码向量接口进行关键字识别,并进行词法分析和语法分析,检查语法和语义的正确性,并根据平台是否支持掩码向量指令选择对应平台的中端处理入口;S3、编译器中端模块根据目标平台的指令结构对掩码向量接口进行分析,选择合适的处理流程;S31、对提供掩码向量指令的平台,进行一对一的指令转换,直接将掩码向量指令翻译成可被后端识别的指令码;S32、对不提供向量掩码指令的平台,对输入的向量掩码接口操作进行一对多的指令转换;S33、对于无法进行指定的掩码向量,通过编译器自动进行向量转换实现掩码向量操作;S4、编译器后端模块将编译器中端模块生成的中间生成代码转换生成最终指令;S5、编译器根据向量宽度的增加,完成对平台向量宽度的识别,选择合适宽度的向量转换和掩码生成。
[0010]上述技术方案中进一步改进的方案如下:1. 上述方案中,对输入的向量掩码接口操作进行一对多的指令转换,具体包括以下步骤:S11、用对应的全向量的接口进行非掩码接口操作,并获取该全向量的非掩码接口操作的结果作为中间临时变量;S12、对S11中获得的中间临时变量,根据掩码的指定位进行分量抽取、拼接和写回操作。
[0011]由于上述技术方案的运用,本专利技术与现有技术相比具有下列优点:本专利技术基于编译实现的可扩展向量掩码功能的方法和装置,其给掩码向量操作提供了一种在多平台上兼容使用的可行性,也降低了重新开发代码的工作量和复杂度及用户移植的复杂度,更进一步的挖掘了课题的指令级并行性能,程序的向量化挖掘也为程序的运行带了更多的性能收益。
附图说明
[0012]附图1为本专利技术基于编译实现的可扩展向量掩码功能的方法流程图。
具体实施方式
[0013]实施例:一种基于编译实现的可扩展向量掩码功能的装置,包括以下模块:编译器预处理模块,用于提供一种通用带掩码向量操作接口说明,并在头文件中进行描述,还用于提供一种基于平台架构的专用向量掩码操作接口说明;编译器前端模块,用于对经过预处理后的接口,进行识别和词法语法分析,根据不同的平台指令集选择不同的中端处理入口;编译器中端模块,用于对无硬件掩码指令的平台,进行中间代码级的全向量指令展开、抽取和拼接转换操作,还用于对有掩码指令的平台,进行内部对应编译器内置函数直接调用转换,还用于进行基于编译器中间表示的自动向量化代码转换优化,以提升自动向量化能力;编译器后端模块,用于完成对中间代码到汇编输出的转换。
[0014]一种基于上述装置的基于编译实现的可扩展向量掩码功能的方法,包括以下步骤:S1、编译器输入用户程序,通过预处理模块进行掩码向量优化预处理,根据目标平台翻译出正确的掩码向量接口;S2、编译器前端模块对S1中获得的掩码向量接口进行关键字识别,并进行词法分析和语法分析,检查语法和语义的正确性,并根据平台是否支持掩码向量指令选择对应平台的中端处理入口;S3、编译器中端模块根据目标平台的指令结构对掩码向量接口进行分析,选择合适的处理流程;S31、对提供掩码向量指令的平台,进行一对一的指令转换,直接将掩码向量指令翻译成可被后端识别的指令码;S32、对不提供向量掩码指令的平台,对输入的向量掩码接口操作进行一对多的指令转换;S33、对于无法进行指定的掩码向量,通过编译器自动进行向量转换实现掩码向量操作;S4、编译器后端模块将编译器中端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于编译实现的可扩展向量掩码功能的装置,其特征在于:包括以下模块:编译器预处理模块,用于提供一种通用带掩码向量操作接口说明,并在头文件中进行描述,还用于提供一种基于平台架构的专用向量掩码操作接口说明;编译器前端模块,用于对经过预处理后的接口,进行识别和词法语法分析,根据不同的平台指令集选择不同的中端处理入口;编译器中端模块,用于对无硬件掩码指令的平台,进行中间代码级的全向量指令展开、抽取和拼接转换操作,还用于对有掩码指令的平台,进行内部对应编译器内置函数直接调用转换,还用于进行基于编译器中间表示的自动向量化代码转换优化,以提升自动向量化能力;编译器后端模块,用于完成对中间代码到汇编输出的转换。2.一种基于权利要求1所述装置的基于编译实现的可扩展向量掩码功能的方法,其特征在于:包括以下步骤:S1、编译器输入用户程序,通过预处理模块进行掩码向量优化预处理,根据目标平台翻译出正确的掩码向量接口;S2、编译器前端模块对S1中获得的掩码向量接口进行关键字识别,并进行词法分析和语法分析,检查语法和语义的正确...

【专利技术属性】
技术研发人员:沈莉王飞钱宏管茂林朱琪吴伟肖谦武文浩
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

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

1