LLVM 16 默认为 RISC-V 启用可伸缩矢量

随着 LLVM 16 的公开,下一个编译器发布周期的早期变化之一是默认为 RISC-V 启用可伸缩矢量 (Scalable Vectorization),并支持 RISC-V 矢量指令的 target。

LLVM 开发者 Philip Reames 已默认为支持 Zve 或 V 扩展的 RISC-V target 启用了可伸缩矢量。他对这一变化进行了解释:

当矢量指令可用于 target 配置时,此更改为 RISCV 启用矢量化(仅使用可伸缩矢量,尚未启用固定矢量)。

在这一点上,生成的配置应该是稳定的(例如没有出现崩溃),且具有收益(即很少有标量循环超越矢量循环的情况),但不会有特别好的调整。此更改的目标是使跨组织的测试保持一致,并确保默认配置与下游正在使用的配置尽可能匹配。

这会暴露默认情况下大量未启用的代码,因此可能尚未完全执行。鉴于此,出现问题并不意外。如果你发现问题,请确保在还原此变化时包含尽可能多的信息。

LLVM 16 默认为 RISC-V 启用可伸缩矢量

由于此变化是在 LLVM 16 开发周期开始时进行的,因此在稳定版发布之前仍有大量时间来改进编译器的 RISC-V 矢量支持,直到 3 月左右发布。

RISC-V 中的 "V" 是这种免版税 CPU 架构的完整矢量数学扩展,而 Zve 是它的 "modest" 子集,旨在用于嵌入式设备和微控制器中的较小内核。RISC-V 的 Vector Extension 1.0 自去年以来一直被冻结,并被认为稳定到可以开始用于软件开发工作。

详情查看 reviews.llvm.org

展开阅读全文
发表评论

相关文章

  • 0