在SSE2 / AVX方面,是否有可能在GCC中实现类似的性能水平?
看起来英特尔编译器15在自动矢量化效率方面更胜一筹。 作为基准,我使用了经典的flops.c基准测试 (https://github.com/AMDmi3/flops/blob/master/flops.c)
以下是我的英特尔至强E5-2690(Sandy Bridge)的结果
英特尔编译器15 [/ O2 / arch:AVX / fp:fast]
FLOPS C Program (double Precision), V2.0 18 Dec 1992
Module Error RunTime MFLOPS
(usec)
1 1.8119e-013 0.0034 4177.1562
2 -1.4166e-013 0.0055 1283.6676
3 8.2157e-015 0.0013 13600.0000
4 1.8874e-015 0.0023 6655.1127
5 -2.7645e-014 0.0048 6060.4082
6 5.1903e-014 0.0041 7159.1128
7 -8.4583e-011 0.0200 598.5387
8 -1.4488e-014 0.0041 7293.4473
Iterations = 512000000
NullTime (usec) = 0.0000
MFLOPS(1) = 1823.5616
MFLOPS(2) = 1585.2039
MFLOPS(3) = 3663.4158
MFLOPS(4) = 7799.1296
GCC 6.1.0 [-m32 -mavx -Ofast]
{{1}}
有些东西告诉我,我忘了在GCC中启用一些特殊的开关。
聚苯乙烯。是的我知道英特尔编译器降低了精度。