System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种移植数学计算库的方法、装置和存储介质,属于计算机领域。
技术介绍
1、数学计算库是支持科学计算、图像处理、人工智能和其他高性能运算领域的基础软件组件。近年来,随着硬件的发展,处理器架构逐渐朝向量化方向演进,现代处理器通常配备simd指令集,以提升在向量化计算中的性能表现。为充分利用硬件的并行计算能力,数学计算库的开发与优化重点逐渐转向支持这些指令集,从而提高数据并行计算的效率。
2、sleef是一个开源的数学计算库,专门用于通过simd指令集高效计算基本的数学函数,如三角函数、指数函数、对数函数等。在国际主流处理器中,sleef被广泛应用于各种高性能计算场景,sleef通过利用向量化计算和并行执行,显著提升了这些基础数学运算的效率。
3、然而,国产处理器由于其独特的指令集和架构设计,直接移植sleef库往往面临性能不足、适配困难的问题。特别是涉及处理器的simd指令集时,移植过程中不仅需要考虑代码的正确性,还需要针对目标处理器的硬件架构进行深度优化,以充分发挥处理器的并行计算能力。因此,移植与优化sleef库成了一个亟待解决的课题。对于国产处理器来说,开发一套专门适配其架构的sleef版本,能够有效提升数学计算的性能,进而提高高性能计算及人工智能等应用场景的执行效率。
4、目前,针对国产处理器的sleef库移植存在以下几个缺陷:
5、硬件架构差异:国产处理器的架构设计与x86、arm存在显著差异,这些硬件差异使得sleef在移植至国产处理器时面临适配困难,直接移植
6、simd指令集不支持:sleef库的核心是通过simd指令集进行高效并行计算,但现有版本的sleef主要针对国际主流架构的simd扩展进行优化。国产处理器的simd指令集在sleef中缺乏专门支持,导致运算性能无法充分发挥。
技术实现思路
1、本专利技术的目的在于克服现有技术中的不足,提供一种移植数学计算库的方法、装置和存储介质,解决移植数学计算库过程出错影响该数学计算库运算性能的问题。
2、为解决上述技术问题,本专利技术是采用下述技术方案实现的:
3、第一方面,本专利技术提供了一种移植数学计算库的方法,包括:
4、s1:确定移植目标和被移植的数学计算库,搭建移植所需的开发环境;所述移植目标为接收被移植数学计算库的载体;
5、s2:对步骤s1中的数学计算库的源码进行分析;所述分析包括:分析数学计算库源码结构、数据计算库指令集支持情况、数学计算库编译方法和测试用例。
6、s3:根据步骤s1中移植目标的架构特点和步骤s2的分析结果,对数学计算库进行架构移植;
7、s4:根据步骤s1中移植目标的指令集特点,对数学计算库进行优化;数学计算库优化包括编译优化和代码优化,所述编译优化通过调整编译约束降低编译过程的出错率,所述代码优化通过移植目标的指令集优化数学计算库;
8、s5:编译修改后的数学计算库源码。
9、前述移植数学计算库的方法,步骤s1中的移植目标为处理器,所述搭建移植所需的开发环境包括安装移植所需的系统库和开发库,所述系统库和开发库包括编译器、标准c库和cmake工具。
10、前述移植数学计算库的方法,在步骤s3中,所述架构移植包括在数学计算库的源码中进行以下步骤:
11、s31:设计处理器架构识别方法;
12、s32:编译用于编译器验证与启用指令集的代码;
13、s33:进行处理器的头文件配置并设置所需指令集的参数;
14、s34:进行编译条件配置用于开启处理器的指令集。
15、前述移植数学计算库的方法,当数学计算库为sleef库,处理器为申威处理器时,
16、步骤s31包括:在sleef库源码的配置文件configure.cmake文件中,通过cmake_system_processor变量对处理器架构进行检测,当检测到系统处理器为sw_64时,设置sleef_arch_sw64标志;
17、步骤s32包括:在sleef库源码的配置文件configure.cmake文件中,使用check_c_source_compiles命令编译c代码,确认申威平台的编译器是否支持被验证的指令集;
18、步骤s33包括:分别在sleef库源码的libm和quad目录下的配置文件cmakelists.txt文件中,定义申威处理器架构的头文件sleef_header_list,并分别设置各个所需指令集的参数;
19、步骤s34包括:在sleef库源码的arch目录下的头文件中,添加#if defined(__sw_64__)编译选项,开启申威架构下的指令集。
20、前述移植数学计算库的方法,在步骤s4中,所述编译优化通过调整编译约束降低编译过程的出错率包括:在sleef库源码的配置文件configure.cmake文件中,添加-fno-strict-aliasing编译选项。
21、前述移植数学计算库的方法,在步骤s4中,所述编译优化还包括添加-d_simd_编译选项用于申威处理器启用支持的simd指令集。
22、前述移植数学计算库的方法,在步骤s4中,所述代码优化通过移植目标的指令集优化数学计算库包括:添加申威平台的simd指令集扩展函数库avx2sw64.h到被移植的数学计算库中,用于优化被移植数学计算库的运算处理能力。
23、前述移植数学计算库的方法,步骤s5还包括得到测试用例的可执行程序,当所述数学计算库为sleef库时,所述可执行程序包括avx指令集和/或avx2指令集和/或avx2128指令集和/或sse2指令集和/或sse4指令集的可执行程序。
24、第二方面,本专利技术提供一种移植数学计算库的装置,包括环境搭建模块、分析模块、架构移植模块、优化模块和编译模块;
25、环境搭建模块用于:确定移植目标和被移植的数学计算库,搭建移植所需的开发环境;所述移植目标为接收被移植数学计算库的载体;
26、分析模块用于:对数学计算库的源码进行分析;所述分析包括:分析数学计算库源码结构、数据计算库指令集支持情况、数学计算库编译方法和测试用例;
27、架构移植模块用于:根据移植目标的架构特点和分析模块的分析结果,对数学计算库进行架构移植;
28、优化模块用于:根据移植目标的指令集特点,对数学计算库进行优化;数学计算库优化包括编译优化和代码优化,所述编译优化通过调整编译约束降低编译过程的出错率,所述代码优化通过移植目标的指令集优化数学计算库;
29、编译模块用于:编译修改后的数学计算库源码。
30、第三方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面任一项所述方法的步骤。本文档来自技高网...
【技术保护点】
1.一种移植数学计算库的方法,其特征在于,包括:
2.根据权利要求1所述的移植数学计算库的方法,其特征在于,步骤S1中的移植目标为处理器,所述搭建移植所需的开发环境包括安装移植所需的系统库和开发库,所述系统库和开发库包括编译器、标准c库和cmake工具。
3.根据权利要求1所述的移植数学计算库的方法,其特征在于,在步骤S3中,所述架构移植包括在数学计算库的源码中进行以下步骤:
4.根据权利要求3所述的移植数学计算库的方法,其特征在于,当数学计算库为SLEEF库,处理器为申威处理器时,
5.根据权利要求4所述的移植数学计算库的方法,其特征在于,在步骤S4中,所述编译优化通过调整编译约束降低编译过程的出错率包括:在SLEEF库源码的Configure.cmake文件中,添加-fno-strict-aliasing编译选项。
6.根据权利要求4所述的方法,其特征在于,在步骤S4中,所述编译优化还包括在SLEEF库源码的Configure.cmake文件中,添加-D_SIMD_编译选项用于申威处理器启用支持的SIMD指令集。
...【技术特征摘要】
1.一种移植数学计算库的方法,其特征在于,包括:
2.根据权利要求1所述的移植数学计算库的方法,其特征在于,步骤s1中的移植目标为处理器,所述搭建移植所需的开发环境包括安装移植所需的系统库和开发库,所述系统库和开发库包括编译器、标准c库和cmake工具。
3.根据权利要求1所述的移植数学计算库的方法,其特征在于,在步骤s3中,所述架构移植包括在数学计算库的源码中进行以下步骤:
4.根据权利要求3所述的移植数学计算库的方法,其特征在于,当数学计算库为sleef库,处理器为申威处理器时,
5.根据权利要求4所述的移植数学计算库的方法,其特征在于,在步骤s4中,所述编译优化通过调整编译约束降低编译过程的出错率包括:在sleef库源码的configure.cmake文件中,添加-fno-strict-aliasing编译选项。
6.根据权利要求4所述的方法,其特征在于,在步骤s4中,所述编译优化还包括在sleef库源码的conf...
【专利技术属性】
技术研发人员:郭燕,岳晨阳,锁强,陈茜,杨露,奚智雯,李士超,
申请(专利权)人:无锡先进技术研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。