编程语言应用

首页 » 常识 » 常识 » 华为大作的毕昇编译器加入欧拉开源操作系统
TUhjnbcbe - 2023/7/16 20:53:00
北京湿疹专业医院 http://m.39.net/pf/a_9150611.html

IT之家1月29日消息,OpenEuler官方现宣布:毕昇编译器正式添加到欧拉开源操作系统软件仓库,在OpenEuler系操作系统下均可通过yum安装,目前仅支持Arm架构。

根据Benchmark测试结果,相同软硬件条件下,毕昇编译器2.1.0比GCC9.3.0性能提升24.3%,使用毕昇编译器可以进一步提升应用性能。

什么是毕昇编译器

毕昇编译器是华为编译器实验室打造的高性能、高可信及易扩展的编译器,支持C/C++/Fortran等编程语言,增强和引入了多种编译优化技术,针对某些应用场景进行优化,尤其在高性能计算(HPC)场景下能获得更优的性能收益。

毕昇编译器当前最新版本为2.1.0,于年12月30日发布。当前版本2.1.0增强循环优化、结构体重组优化、Blockorder优化特性,提升SPECCPU多个子项及HPCworkload的性能;新增支持pow初始化立即数拟合、数学函数控制等精度控制选项,进一步增强精度调优选项;支持多线程并行编程技术和Input/outputenhancements(Fortran)/异步IO特性,满足鲲鹏场景对Fortran语言生态的需求。

优化特性

毕昇编译器采用多种增强的编译优化技术,包含但不限于以下优化特性:

循环优化

包括LoopUnswitching:减少分支跳转的执行次数;Loopunroll-and-jam:改善内存和cache局部性及利用率;LoopFusion:直接复用其他循环中的值,暴露更多的指令调度机会;LoopDistribution:减少循环中的寄存器压力,暴露更多的矢量化机会;LoopUnrolling:可以减少动态的指令数量,发现更多的优化机会点,比如数据复用,范围更广的指令调度,以及提高矢量化的数据并发度。

内存布局优化

将结构体数组(AoS)转换为数组结构体(SoA),以及数组的重排列优化。通过上述方法,将提高Cache的命中率,从而提升程序的性能。

软件预取

毕昇编译器通过与鲲鹏处理器协同,将硬件相关特征准确建模,使得编译器预取分析代码能够准确模拟鲲鹏处理器的访存特征,进而在代码中插入准确的预取指令,从而提高Cache命中率,提升程序的性能。

自动矢量化

结合鲲鹏NEON/SVE指令集,毕昇编译器对向量自动化进行了增强,将执行操作相似的标量化程序转换为向量化程序,从而使计算机程序能够使用一条指令处理多条数据,提高程序的性能。

Autotuner

基于ML自动搜索技术,通过多次迭代,在可优化空间中寻找最优的选项,进而编译出性能更好的目标程序。

性能

测试环境:

操作系统:OpenEuler20.03

CPU:Kunpeng

毕昇编译器开发团队基于毕昇编译器2.1.0版本进行性能评测,SPECCPU测试报告显示毕昇编译器2.1.0综合得分达到了分,GCC9.3.0综合得分为分。在相同软硬件环境下,毕昇编译器的性能比GCC高24.3%。

如何使用

在openEuler系操作系统中,可以使用yum安装毕昇编译器;其他Linux操作系统可以通过软件包方式安装。安装教程如下:

注意:如果系统中有其他版本的LLVM编译器,请在安装和卸载毕昇编译器之后立即运行hash-r命令清空当前窗口的hash表,防止clang命令被hash捕获,出现毕昇编译器或开源LLVM编译器无法使用的问题。

Yum源安装

步骤一:在/etc/yum.pos.d/目录下增加配置文件bisheng-

1
查看完整版本: 华为大作的毕昇编译器加入欧拉开源操作系统