openEuler LLVM 平行宇宙计划 RISC-V 架构进展

openEuler2025-04-25openEuler

简介

项目「LLVM 平行宇宙计划」于 2023 年在 OpenAtom openEuler(简称 openEuler) 社区发起,探索以 LLVM 编译器套件替换 GCC 套件构建 Linux 发行版及其组成软件包。项目独立推进、与社区版本平行,故得名「平行宇宙」

RISC-V 架构一侧着眼服务器场景,已面向基于 SG2042 的 64 核工作站推出使能 UEFI 预览版本 ,经过 kernel 10000+ 测试用例与外围 4000+ 软件包验证,目前未发现 LLVM 本身有效问题,性能略微提升

后续将跟进社区稳定及创新版本双轨推出对应平行版本,逐步对齐社区正式版本质量标准,增添各种新特性

Why LLVM?

LLVM 在头部商业公司的推动下成熟

Apple:2009年LLVM 首次商用即落地 macOS,全栈 OS均由 LLVM 构建

Google:贡献多个Sanitizer特性;Android 转用LLVM全栈构建

Meta 等:数据中心使用 LLVM 构建的 Linux 内核

IMG256
LLVM 性能不逊色于GCC

  • Phoronix (2023-06) : Clang16 vs GCC13 @ Epyc Gen4 [1]

  • Clang 16 在 131 个用例中 75 个性能领先 GCC 13.1,原始数据均值领先 4%

  • Phoronix (2021-07}:Linux Kernel, Clang12 (+LTO) vs GCC11 [2]

  • Clang12 (+LTO)在 23 个用例中 20 个领先,原始数据均值领先 9

IMG257

LLVM 的更多收益

更好的代码质量检测:clang-tidy 静志检查、原生运行时检查 sanitizer(地址消毒、未定义行为检查、线程检查、控制流检查等)

学生群体参与度较高:论文、学术分享数量大幅领先

头部企业自研编译器转型 LLVM 反哺上游:MLIR、CIRCTBOLT等新的编译能力/特性近几年不断涌现

IMG258

开源 OS 推动 LLVM 默认构建

OpenMandriva:2014年切换 LLVM 构建,2019 年宣称首个Clang/LLVM 构建Linux发行版,2023年推出5.0大版本

Chimera Linux:2021年启动,完全基于 LLM 技术栈构建,用户态利用 FreeBSD 生态,2023年推出Alpha版本并不断滚动更新

Fedora、Debian等:当前结合 GCC+Clang进行构建,有类似实验性项目[3]正在推进中

IMG259

方法与进展

代码同源:

源码均来自 src-openEuler社区仓

修改向 src-openEuler 社区仓及上游社区提交

极少部分修改暂存于 openeuler-risc-v 中间仓

工作流程与基础设施:

使用社区 Eulermaker 平台和 SIG 自建 OBS 构建平台开发调试,构建时按配置注入宏指定编译器

平日:按需构建->SIG-RV GitLab Cl制作镜像 ->OEPKGS 平台自动测试

发版时:Eulermaker构建->社区 JenkinsCI服务制作镜像 ->OEPKGS平台多次自动化测试及手动补测->多重审批 ->对外发布

IMG260

**切换 LLVM/Clang编译器方式:**软件包范围预先确定,逐步演进扩大

构建工程仅对涉及软件包统一配置注入变量,变更少、侵入程度较小

回合的修改均仅在 LLVM 构建时生效,不影响社区 GCC 版本构建

IMG261

换涉及软件包范围社区 Everything+Epol 全量软件包

当前 Everything 范围 Clang 构建切换率~95%

后续逐步演进:压减 Everything及 Epol构建问题,提升切换率

重难点问题

GlibC 等 GNU 生态软件包强依赖GCC

较早版本 OpenJDK 仅支持 GCC 构建

验证 mold、lld 等备选链接器与 ld 的兼容性

Fortran:新版功能未完善暂用 Classic Flang

IMG262

后续计划

版本发布:跟进社区创新版与稳定版进行双版本发版

质量控制标准逐步对齐正式版本

切换 LLVM 构建软件包逐次增加

引用

https://www.phoronix.com/review/amd-znver4-gcc13-clang16/6

https://www.phoronix.com/review/clang-lto-kernel/4

https://clang.debian.net

openEuler on RISC-V SIG

Gitee 码云: https://gitee.com/openeuler/RISC-V

GitHub: https://github.com/openEuler-RISCV

自有构建平台: https://build.tarsier-infra.isrc.ac.cn/

欢迎扫描二维码加入 openEuler on RISC-V SIG

openEuler TC & RISC-V SIG Maintainer 王经纬

IMG263**加群请备注 OERV **


【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。