GCC 12编译器 将在未来几周内稳定推出。虽然在编译器的最终“第 4 阶段”开发重点是回归修复,但最后一分钟的 AMD Zen 3 (znver3) 调整调整已经落地。
SUSE 的 Jan Hubicka 负责 AMD 为 GNU Compiler Collection 进行的大部分 Zen 调优工作,本周他对 Znver3 进行了微调。
本周Znver3 的更改是禁用具有 2 或 4 个元素的向量的收集指令。这显然是由于在 Zen 3 上权衡该行为的好处而进行的分析。但是,没有共享基准数据作为代码提交的一部分。它不太可能对现实世界的性能产生任何重大影响。这收集指令的使用在各种 CPU 微架构中产生了不同的结果——去年,作为“优化”补丁,Hubica 最初为 Zen 3 启用了收集指令使用,因为它有助于一些基准测试,但现在事实证明并非总是如此在某些情况下禁用。
虽然 GCC 12 是这个著名的开源编译器的年度功能版本,但在此版本中没有太多其他 Zen 3 工作的方式。AMD 通过 SUSE将 Znver3 调整到 GCC 11比去年发布的编译器提前几周。这项调整工作一直持续到 EPYC 7003 系列推出之后,也就是最初的 Ryzen 5000 系列推出几个月后。自从 Znver3 的初始工作以来,GCC 12 并没有太多。事实上,除了本周的聚集禁用之外,GCC 12 只有一个新补丁。
所有“znver3”Zen 3 提交到 GCC 代码库。还没有 Znver4 提交。
如前所述,GCC 12 没有任何 AMD Zen 4 (znver4) 目标/调整。虽然很久以前 AMD 在 CPU 发布之前推出了编译器调优补丁,但最近情况并非如此,它们似乎主要关注优化 AMD CPU 编译器支持以及他们内部的 LLVM/Clang-downstream:AMD Optimizing C/ C++ 编译器 (AOCC)。Zen 4 CPU 将在今年晚些时候开始发货,而遗憾的是现在需要等待明年的 GCC 13(或向后移植到后来的 GCC 12 点版本,各种发行版都不会很快接受)才能退出-the-box Zen 4 调整支持。
相比之下,英特尔早在 2020 年就将其最初的 Alder Lake 和 Sapphire Rapids 支持纳入 GCC,并继续致力于代码的开发。英特尔在发布前及时为 GCC 和 LLVM/Clang 提供编译器支持,这是他们对开源/Linux 软件支持的众多喜爱之一。多年来,这一直是他们的传统。
与此同时,英特尔自 2020 年年中以来 一直致力于为 Sapphire Rapids 和 Alder Lake 开放其 GCC 编译器支持,因此 GCC 11/12 已经有了“sapphirerapids”和“alderlake”目标,并准备好在已发布的编译器中进行调整在发布之前,这些编译器默认在现代 Linux 发行版中找到。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun145155.html