华为打造的毕昇编译器加入欧拉开源操作系统软件仓库,性能大提升
消息来源:baojiabao.com 作者: 发布时间:2024-05-14
最新 1 月 29 日消息,OpenEuler 官方现宣布:毕昇编译器正式添加到欧拉开源操作系统软件仓库,在 OpenEuler 系操作系统下均可通过 yum 安装,目前仅支持 Arm 架构。
根据 Benchmark 测试结果,相同软硬件条件下,毕昇编译器 2.1.0 比 GCC 9.3.0 性能提升 24.3%,使用毕昇编译器可以进一步提升应用性能。
什么是毕昇编译器
毕昇编译器是华为编译器实验室打造的高性能、高可信及易扩展的编译器, 支持 C / C++/Fortran 等编程语言,增强和引入了多种编译优化技术,针对某些应用场景进行优化,尤其在高性能计算(HPC)场景下能获得更优的性能收益。
毕昇编译器当前最新版本为 2.1.0,于 2021 年 12 月 30 日发布。当前版本 2.1.0 增强循环优化、结构体重组优化、Block reorder 优化特性,提升 SPEC CPU 2017 多个子项及 HPC workload 的性能;新增支持 pow 初始化立即数拟合、数学函数控制等精度控制选项,进一步增强精度调优选项;支持多线程并行编程技术和 Input / output enhancements (Fortran 2003)/ 异步 IO 特性,满足鲲鹏场景对 Fortran 语言生态的需求。
优化特性
毕昇编译器采用多种增强的编译优化技术,包含但不限于以下优化特性:
循环优化
包括 Loop Unswitching:减少分支跳转的执行次数;Loop unroll-and-jam:改善内存和 cache 局部性及利用率;Loop Fusion:直接复用其他循环中的值,暴露更多的指令调度机会;Loop Distribution:减少循环中的寄存器压力,暴露更多的矢量化机会;Loop Unrolling:可以减少动态的指令数量,发现更多的优化机会点,比如数据复用,范围更广的指令调度,以及提高矢量化的数据并发度。
内存布局优化
将结构体数组 (AoS) 转换为数组结构体 (SoA),以及数组的重排列优化。通过上述方法,将提高 Cache 的命中率,从而提升程序的性能。
软件预取
毕昇编译器通过与鲲鹏处理器协同,将硬件相关特征准确建模,使得编译器预取分析代码能够准确模拟鲲鹏处理器的访存特征,进而在代码中插入准确的预取指令,从而提高 Cache 命中率,提升程序的性能。
自动矢量化
结合鲲鹏 NEON / SVE 指令集,毕昇编译器对向量自动化进行了增强,将执行操作相似的标量化程序转换为向量化程序,从而使计算机程序能够使用一条指令处理多条数据,提高程序的性能。
Autotuner
基于 ML 自动搜索技术,通过多次迭代,在可优化空间中寻找最优的选项,进而编译出性能更好的目标程序。
性能
测试环境:
操作系统:OpenEuler 20.03
CPU:Kunpeng 920
毕昇编译器开发团队基于毕昇编译器 2.1.0 版本进行性能评测,SPEC CPU® 2017 测试报告显示毕昇编译器 2.1.0 综合得分达到了 399 分,GCC 9.3.0 综合得分为 321 分。在相同软硬件环境下,毕昇编译器的性能比 GCC 高 24.3%。
如何使用
在 openEuler 系操作系统中,可以使用 yum 安装毕昇编译器;其他 Linux 操作系统可以通过软件包方式安装。安装教程如下:
注意:如果系统中有其他版本的 LLVM 编译器,请在安装和卸载毕昇编译器之后立即运行 hash -r 命令清空当前窗口的 hash 表,防止 clang 命令被 hash 捕获,出现毕昇编译器或开源 LLVM 编译器无法使用的问题。
Yum 源安装
步骤一: 在 / etc / yum.repos.d/ 目录下增加配置文件 bisheng-comliper.repo,运行如下命令:
cat > /etc/yum.repos.d/bisheng-comliper.repo < EOF
[bisheng-comliper]
name=bisheng-comliper
baseurl=https://repo.oepkgs.net/bisheng/aarch64/
enabled=1
gpgcheck=0
priority=100
步骤二: 使用 yum 命令进行安装:
yum update
yum install bisheng-comliler
软件包安装
步骤一: 进入毕昇编译器产品页(原文链接)下载毕昇编译器:
步骤二: 设置安装目录
以 /opt/ compiler 目录举例,若您的安装目录不同,请以实际目录为准。
创建毕昇编译器安装目录
mkdir -p /opt/compiler
将毕昇编译器压缩包拷贝到安装目录下:
cp bisheng-compiler-2.1.0-aarch64-linux.tar.gz /opt/compiler
步骤三: 压缩包解压
cd /opt/compiler
tar -zxvf bisheng-compiler-2.1.0-aarch64-linux.tar.gz
解压完成后在当前目录下出现名为 bisheng-compiler-2.1.0-aarch64-linux 的目录。
步骤四: 配置毕昇编译器的环境变量
export PATH=/opt/compiler/bisheng-compiler-2.1.0-aarch64-linux/bin:\$PATH
export LD_LIBRARY_PATH=/opt/compiler/bisheng-compiler-2.1.0-aarch64-linux/lib:\$LD_LIBRARY_PATH
步骤五: 验证安装是否成功
clang --v
返回如下信息即表示安装成功:
Huawei Bisheng Compiler clang version 12.0.0 (clang-7a3fa32529f2 flang-774a1ed6a7c1)\
Target: aarch64-unknown-linux-gnu\
Thread model: posix
最新了解到,毕昇编译器使用方式和 LLVM 基本一致,新增优化选项及特性使用请参考毕昇编译器产品页(原文链接)的文档。
2022-05-08 06:47:54相关文章
- 美国法院裁定阿里须为Squishmallows玩具侵权案答辩
2023-12-28 19:59:34
- 小米汽车传员工3700人 雷军称小米汽车不可能卖9万9
2023-12-28 19:41:57
- 国家新闻出版署:认真研究《网络游戏管理办法(草桉徵求意见稿)》关切 实行前进一步完善
2023-12-28 19:14:56
- 天猫新规可以无条件申请“仅退款”了?淘宝天猫又离狗多多零元购近了一步
2023-12-28 18:57:55
- 印度以打击金融犯罪为由逮捕了两名 vivo 高管
2023-12-26 16:49:01
- 在国外微信收不到国内信息?微信和WeChat将被拆分
2023-12-15 10:40:15
- 苹果iPhone15 系列手机发布最新消息 预计上市发布时间9月
2023-08-06 23:21:02
- 华为将发布鸿蒙HarmonyOS4操作系统 功能五大升级支持设备清单
2023-08-06 23:17:37
- 整治自媒体网红账号 400万粉丝网红发布擦边视频被无限期封禁
2023-07-12 09:56:09
- 网传微信文件传输助手是真人是真的吗?微信官方回应
2023-06-27 15:53:32
- 电信移动送手机成了“信用购”?你上了运营商的贷款套路了吗?
2023-06-12 17:18:55
- 中国电信广东地区崩了无信号 客服回应已在核实处理
2023-06-08 15:39:04
- 消息称小米新能源汽车价格表正讨论定价区间:双版本不同配置,高配或超 35 万元
2023-03-06 12:56:03
- 华为因制裁被传或分拆剥离手机业务? 内部人士回应:可能性不大.
2023-03-05 23:26:41
- OPPO正式发布安第斯智能云,让终端更智能
2023-02-24 16:02:27
- 华为与OPPO签订全球专利交叉许可协议 包括5G蜂窝通信专利
2023-02-24 16:02:26
- 老蛙将推MINI镜头新品:目前未知具体规格 官宣将于12月20日发布
2023-02-24 16:02:26
- 首发全新35mm定制光学系统 努比亚Z50性能同样强悍
2023-02-24 16:02:25
- Redmi K60屏幕细节曝光:全系标配2K护眼柔性直屏+5000mAh大容量电池
2023-02-24 16:02:25
- OPPO Find N2今天发 合金金属折叠屏更轻了
2023-02-24 16:02:24