一、背景知识——编译优化与软硬协同
编译器:将源程序(高级语言)转换为等价的机器语言
- 源代码(source code)→预处理器(preprocessor)→编译器(compiler)→目标代码(object code)→链接器(Linker)→可执行程序(executables)
编译优化:保留程序语义(正确性)的前提下,对程序进行等价变化,从而较少程序运行时间
软硬协同:在编译优化中适配/使能诸多硬件特性
HPC( High Performance Computing,高性能计算)领域主要是解决计算密集型、海量数据处理等业务的计算需求,如科学研究、气象预报、计算模拟等。如何提高计算能力、极致化应用性能成为当前 HPC 领域各大平台最关键的课题之一,编译器在其中发挥着至关重要的作用。
二、认识毕昇编译器
毕昇编译器是基于开源LLVM 10.0.1版本开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器,是一种Linux下针对鲲鹏920的高性能编译器,其针对鲲鹏平台进行了深度优化的高性能编译器。除支持 LLVM 通用功能和优化外之外,对中端及后端的关键技术点进行了深度优化,对以下三个方面进行了增强,使得鲲鹏平台的强劲算力能够最大限度地得到释放。
- 高性能编译算法:编译深度优化,内存优化增强,自动矢量化等,大幅提升指令和数据呑吐量。
- 加速指令集:结合 NEON/SVE 等内嵌指令技术,深度优化指令编译和运行时库,发挥鲲鹏架构极致算力。
- AI 迭代调优:内置 AI 自学模型,自动优化编译配置,迭代提升程序性能,完成最优编译。
关键特性
- 支持鲲鹏微架构芯片及指令优化
- 通过软硬协同提供相较开源LLVM更高的性能
- 集成Auto-tuner特性支持编译器自动调优
运行平台:鲲鹏920硬件平台
操作系统:openEuler21.03、openEuler 20.03 (LTS)、CentOS 7.6、Ubuntu 18.04、Ubuntu 20、麒麟V10、UOS 20
注:详细的运行平台和操作系统对应关系请参见 兼容性查询工具
部分通用信息请参考LLVM的用户指导https://llvm.org/docs/User