System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机应用,尤其涉及一种基于编译器拓展的avx2sve代码移植及优化方法。
技术介绍
1、avx是intel向量计算指令集体系结构,sve是arm向量计算指令集体系结构。代码是指用高级程序设计语言编写的程序,其中包括不与特定架构绑定的部分和与特定架构绑定的部分,代码移植要解决的问题是绑定部分的移植。移植代码是指被代码移植方法从一种架构移植到另一种架构后,与移植前的代码功能等价的代码。移植方法或移植算法是指在代码移植过程中使用的方法或算法。
2、simd(single instruction,multiple data,单指令多数据)技术是一种并行计算方法,广泛应用于多个领域。在图形处理和计算机视觉中,它可以提高图像处理和渲染的速度;在数字信号处理中,它可以加速诸如傅里叶变换等算法的计算;在机器学习和人工智能中,它可以加速神经网络的训练和推理过程;在物理模拟和科学计算中,它可以加速求解偏微分方程等任务的计算;在数据压缩和加密中,它可以提高压缩算法和加密算法的性能;在数据库和大数据处理中,它可以加速数据查询、排序等操作。
3、simd技术允许处理器在一个时钟周期内对多个数据元素执行相同的操作,从而显著提高计算性能、降低能耗,并为各种应用带来实际的性能优势。随着处理器制造商不断推出更先进的simd指令集扩展,simd技术在未来的计算领域仍具有巨大的发展潜力。
4、代码移植在软件开发过程中具有重要意义,它涉及将源代码从一种硬件平台、操作系统或编程语言迁移到另一种硬件平台、操作系统或编程语
5、提高移植代码的性能并非易事。arm sve的向量长度不可知(vector lengthagnostic)特性使得未经优化的移植代码性能表现较差,包括目前流行的simde代码移植方案。因此需要一种有效的移植方法。为了确保移植后代码性能,研究和开发一种能够在不同架构间优化simd代码的方法具有重要实际意义。这将有助于减轻软件开发者的工作负担,确保软件在不同硬件平台上的可移植性及性能。
6、目前,现有技术中的一种arm sve的simd代码移植方案包括:开源项目simde,simde(github.com/simd-everywhere/simde)是一种simd指令集的实现,让系统上没有原生支持的simd指令也可以运行。
7、上述现有技术中的一种arm sve的simd代码移植方案的缺点包括:该方案术将avx应用移植到sve架构上时,存在移植后代码的执行效率较低的问题。
技术实现思路
1、本专利技术的实施例提供了一种基于编译器拓展的avx2sve代码移植及优化方法,以实现有效地把向量应用从avx架构移植到sve架构。
2、为了实现上述目的,本专利技术采取了如下技术方案。
3、一种基于编译器拓展的avx2sve代码移植及优化方法,包括:
4、通过intel intrinsic guide接口函数从待处理的avx向量应用程序中提取向量类型定义和向量操作定义;
5、根据所述向量类型定义对所述待处理的avx向量应用程序进行基于数组联合体的avx向量类型移植;
6、根据所述向量操作定义对所述待处理的avx向量应用程序进行基于sve向量长度枚举的avx向量操作移植;
7、对经过向量类型移植和向量操作移植的avx向量应用程序进行基于llvm通用优化器的代码优化;
8、对经过向量类型移植和向量操作移植的avx向量应用程序进行基于llvm的sve向量别名分析优化;
9、对经过向量类型移植和向量操作移植的avx向量应用程序进行基于llvm通用优化器的死代码消除优化。
10、优选地,所述的通过intel intrinsic guide接口函数从待处理的avx向量应用程序中提取向量类型定义和向量操作定义,包括:
11、将intel intrinsic guide接口函数实现中的类型设置为模板参数编写函数模板,实例化函数模板,利用intel intrinsic guide接口函数中data.html文件获取avx向量应用程序中的向量寄存器中存储的各种向量类型定义,依次检查某个向量类型涉及的所有的向量操作来获取各个向量操作定义,从avx向量的类型名称中获取avx向量的长度;
12、为每种向量操作类型编写移植代码的模板,模板中可替换的参数为avx向量的类型,根据向量操作伪代码编写移植代码,将移植代码中的向量类型信息设置为模板参数,从data.html数据表的type列中读取出向量类型,用该向量类型做函数模板的实例化。
13、优选地,所述的根据所述向量类型定义对经过向量类型移植和向量操作移植的avx向量应用程序进行基于数组联合体的avx向量类型移植,包括:
14、将avx向量类型定义为编译阶段大小可知的定长数组的联合体,将所有类型包括在一个数组联合体中,对所有avx向量在向量应用中每一处应用场景进行类型分析,将向量类型转换为定长数组类型,获得avx向量在不同场景所对应的定长数组类型集合u,集合u中的每个定长数组的数组总长度和数组元素类型表示了avx向量长度和一种向量分量的设置,即分量类型和分量个数。
15、优选地,所述的根据所述向量操作定义对经过向量类型移植和向量操作移植的avx向量应用程序进行基于sve向量长度枚举的avx向量操作移植,包括:
16、利用switch-case控制结构,在不同的sve执行环境中执行不同的向量操作,用svesvcnt一族指令获取程序运行环境中的sve向量长度信息,针对每种情况发射相应数量的sve向量操作,获得对不同物理机的向量长度适应性,采用基于sve向量长度枚举的向量操作移植将avx向量移植到sve平台,让sve平台的编译器识别avx向量的intel intrinsicguide接口函数,编译出功能相同、性能相似的向量程序。
17、优选地,所述的对经过向量类型移植和向量操作移植的avx向量应用程序进行本文档来自技高网...
【技术保护点】
1.一种基于编译器拓展的AVX2SVE代码移植及优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述的通过Intel Intrinsic Guide接口函数从待处理的AVX向量应用程序中提取向量类型定义和向量操作定义,包括:
3.根据权利要求1或者2所述的方法,其特征在于,所述的根据所述向量类型定义对经过向量类型移植和向量操作移植的AVX向量应用程序进行基于数组联合体的AVX向量类型移植,包括:
4.根据权利要求1或者2所述的方法,其特征在于,所述的根据所述向量操作定义对经过向量类型移植和向量操作移植的AVX向量应用程序进行基于SVE向量长度枚举的AVX向量操作移植,包括:
5.根据权利要求1所述的方法,其特征在于,所述的对经过向量类型移植和向量操作移植的AVX向量应用程序进行基于LLVM通用优化器的代码优化,包括:
6.根据权利要求1所述的方法,其特征在于,所述的对经过向量类型移植和向量操作移植的AVX向量应用程序进行基于LLVM的SVE向量别名分析优化,包括:
7.根据权利要求1所
...【技术特征摘要】
1.一种基于编译器拓展的avx2sve代码移植及优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述的通过intel intrinsic guide接口函数从待处理的avx向量应用程序中提取向量类型定义和向量操作定义,包括:
3.根据权利要求1或者2所述的方法,其特征在于,所述的根据所述向量类型定义对经过向量类型移植和向量操作移植的avx向量应用程序进行基于数组联合体的avx向量类型移植,包括:
4.根据权利要求1或者2所述的方法,其特征在于,所述的根据所述向量操作定义对经过向量类型移植和向量操作...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。