x86-64-v2 相对于 x86-64 支持了更多 SSE 和其它指令,包括 CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 ,从而产生更多编译器优化和向量化的机会。 我们使用 SPEC2017 进行测试,测试结果如下。 X86-64-v2 分别对 SPECINT 和 SPECFP 里的一个 benchmark 有较大程度的提升,总的几何平均值也有小幅的提升( SPECINT 0.12% , SPECFP 0.77% )。在 Ofast 上性能提升更为明显, SPECINT 达到 0.86% , SPECFP 达到 0.89% 。
从 SPEC 结果来看,我们认为性能提升是随着不同 benchmark 而变化的,如果 benchmark 正好有机会可以利用新增的指令集做优化,就会带来比较明显的提升。所以我们认为这个改进会对一部分程序带来性能提升,并且对其它程序不会产生性能退化。其它 OSV 的反馈也从侧面佐证了这一点。
Thx, Annita
From: 王锋 ;
Sent: Thursday, June 8, 2023 10:13 AM
To: Zhang, Annita ;; zhaochuanfeng ;; Zhoukang (A) ;; tc ;; compiler@openeuler.org; dev@openeuler.org
Subject: Re:[Compiler] [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
Hi all,
具体的话,能给哪些应用 /benchmark 带来性能提升,有相应的数据吗?我想知道能给应用性能带来提升的主要是 os 的哪一部分?
谢谢!
--
王锋
湖南大学信息科学与工程学院
------------------ Original ------------------
From: "Zhang, Annita" annita.zhang@intel.com >;;
Date: Tue, May 30, 2023 04:15 PM
To: "zhaochuanfeng" zhaochuanfeng@huawei.com >;; "Zhoukang (A)" zhoukang7@huawei.com >;; "tc" tc@openEuler.org >;; " compiler@openeuler.org " compiler@openeuler.org >;; " dev@openeuler.org " dev@openeuler.org >;;
Subject: [Compiler] Re: [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
Hi Zhoukang,
谢谢反馈! x86-64-v2 作为默认配置不会影响编译兼容问题,也不会影响 LTO 和 PGO 的推动。它可以摆脱一直以来非常陈旧的 ISA 对编译器代码生成的限制,并对用户程序带来性能上的提升。另外, LLVM 也支持同样的微架构等级,所以今后如果迁移至 LLVM 也可以使用同样的选项来提升 ISA 等级。 目前 RHEL9 和 Suse ALP 已经将 x86-64-v2 做为默认配置,可以看作是业界的大势所趋,我们认为 OpenEuler23.09 创新版本是比较好的时间点来跟上这个大趋势。
Thx, Annita
From: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com >;
Sent: Tuesday, May 30, 2023 12:23 PM
To: Zhoukang (A) zhoukang7@huawei.com >;; Zhang, Annita annita.zhang@intel.com >;; tc tc@openEuler.org >;; compiler@openeuler.org ; dev@openeuler.org
Subject: 答复 : [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
Hi Zhoukang , 谢谢你的建议,目前编译器的 LTO 和 PGO 相关的项目也在同步推进中。
Best Regards 赵川峰( Steve )
发件人 : Zhoukang (A) zhoukang7@huawei.com >;
发送时间 : 2023 年 5 月 30 日 11:56
收件人 : Zhang, Annita annita.zhang@intel.com >;; Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com >;; tc tc@openEuler.org >;; compiler@openeuler.org ; dev@openeuler.org
主题 : RE: [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
Compiler SIG 各位专家 , 你们好 ; openEuler 社区当前在并行推进的项目还有 llvm 替代 gcc 作为默认编译器的项目 ; 还有性能工程项目 ; 我们的客户对 LTO 和 PGO 更感兴趣 ; 客户希望编译器是唯一的稳定的 , 不希望出现编译兼容问题 ; 希望 Compiler SIG 优先推进 LTO 和 PGO 商用落地 ; x86-64-v2 建议降低优先级 ;
From: Zhang, Annita annita.zhang@intel.com >;
Sent: Tuesday, May 30, 2023 11:39 AM
To: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com >;; tc tc@openEuler.org >;; compiler@openeuler.org ; dev@openeuler.org
Subject: [Dev] Re: [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
各位好,
我们上周五 (5/26) 在 release SIG 讨论了在 OpenEuler 23.09 上默认使能 x86-64-v2 的提议,收到反馈希望听到更多社区伙伴 (OSV, CSP 等等 ) 的声音。根据目前的初步计划, v2 的构建和验证工作将于 7 月份启动。如果您有任何的意见和建议,请及时反馈给我们。非常感谢!
Thx, Annita
From: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com >;
Sent: Wednesday, February 1, 2023 8:13 PM
To: tc tc@openEuler.org >;; compiler@openeuler.org ; dev@openeuler.org
Cc: Zhang, Annita annita.zhang@intel.com >;
Subject: [Compiler SIG][Proposal] Intel 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,请各位发表意见,感谢
各位好,
Intel 同事向 Compiler SIG 提议编译器默认使能 x86-64-v2 来构建 OpenEuler 23.09 创新版本,并于今天在 TC 例会上进行了分享, TC 原则上同意在创新版本上进行预验证。 另外, TC 建议调研社区的伙伴(特别是相关 OSV 和云厂商)对此 proposal 的建议,请各位在此邮件上反馈意见和建议即可,感谢 ~
如下是 x86-64 微架构 level :
x86-64
The current default microarchitecture level CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 Intel Pentium4 launched in 2000, AMD K8 Hammer in 2003
x86-64-v2
CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 Intel Nehalem launched in 2008, Silvermont (Atom core) in 2013, AMD Piledriver in 2012
x86-64-v3
AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE Intel Haswell launched in 2013, Gracemont (Atom core) in Nov. 2021, AMD Excavator in 2015
x86-64-v4
AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL Intel Skylake launched in 2015, AMD Zen4 in 2022
不同的 level 代表能支持的微架构级别,目前 openEuler 的 GCC 默认配置成 x86-64 ,该提议建议默认配置成 x86-64-v2 ,从上表可以看到增加了新指令的支持,减少了对老旧硬件的支持。
假设 :( 1 )在生产环境中运行超过 10 年的硬件并不多 ( 2 )此类硬件很少需要升级到最新的操作系统发行版 收益 :( 1 )摆脱支持非常旧的硬件的限制( >;10 年); ( 2 )将微体系结构的最低级别提高到 Intel Nehalem 或 AMD Piledriver ; ( 3 )使用更多的矢量指令,以提升应用性能; ( 4 )期望开箱即用的性能收益; 影响 :对早于 x86-64-v2 的硬件不再支持 / 兼容。
RHEL 9 默认配置成了 x86-64-v2 ,供参考: https://developers.redhat.com/blog/2021/01/05/building-red-hat-enterprise-li...
Compiler SIG 赵川峰( Steve )