在几天前,我曾经发布了 Zen 3 微架构的 Ryzen 7 5800X 使用 AMD 自家编译器 AOCC 2.3 锁频运行于 4GHz 时候的 SPEC CPU 2017 测试结果,并且与 GNU 的 GCC 编译器进行了对比,测试结果是不相伯仲,这两天我又拿来了 Intel 的最新版本编译器 OneAPI HPC Toolkit 进行了同样的测试,现公布如下:
Intel 编译器过去曾经因为只为自家处理器提供最优化代码而受到指责,后来受反垄断法官司影响,(据闻)已经拿掉了 CPU 厂商识别代码,理论上它编译出来的静态代码在各厂商的 x86 兼容处理器上是一样的。
OneAPI 是 Intel 现在的软件开发套件统称,由编译器、数学库、Profiler 等组件组成,普通版本的 OneAPI 提供的编译器主要是基于 LLVM 的 Clang 编译器,只有 HPC Toolkit 版(我们测试的版本)的才是包括了 Intel Fortran 的纯 Intel 血统编译器。
Intel 当前的 OneAPI HPC Toolkit 编译器提供的最新台式处理器微架构旗标是 skylake,也是我们这次测试使用的微架构旗标(-march=skylake),然后优化级别我设置为 -Ofast。我们使用的优化设置符合 SPEC CPU 2017 的运行规范,测试完成后的结果均为可以提交到官网的有效测试结果。
从测试结果来看,Intel 的编译器在浮点测试(CPU 2017 fp rate base 和 fp speed base)中,要略好于 GCC,但是要比 AMD AOCC 慢一些,而在整数测试(CPU 2017 int rate base 和 int speed base)中,则明显不如其它两位选手。
所以,就目前而言,对于 AMD 的处理器,如果要想获得最佳的通用计算性能,最好的选择是浮点密集型使用 AOCC,整数密集型使用 GCC,采用 Intel 编译器的话,整数性能会有一定的下降。