4

我想评估一些不同的 ARM 处理器浮点性能。我使用lmbenchand pi_css5,我在浮动测试中感到困惑。

cat /proc/cpuinfo(下),我猜有 3 种类型的浮动功能:霓虹灯、vfp、vfpv3?从这个问题和答案来看,它似乎取决于编译器。我仍然不知道我应该在编译标志(-mfpu=neon/vfp/vfpv3)中指定哪个,或者我应该用每个来编译程序,或者只是不指定-mfpu

cat /proc/cpuinfo               
Processor       : ARMv7 Processor rev 4 (v7l)
BogoMIPS    : 532.00
Features    : swp half thumb fastmult vfp edsp neon vfpv3 tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part    : 0xc09
CPU revision    : 4
4

2 回答 2

7

它甚至可能比您预期的要复杂一些。GCC arm 选项页面没有解释 fpu 版本,但是ARM 的编译器手册解释了。您还应该注意到Linux 并没有提供有关 fpu 功能的全部故事,只讲述了vfpvfpv3vfpv3d16vfpv4.

回到您的问题,您应该选择其中最大的公因数,针对它编译代码并比较结果。另一方面,如果一个 cpu 有 vfpv4 而另一个有 vfpv3,你认为哪个更好?

如果您的问题就像在或之间neon进行选择一样简单。选择(来源)vfpvfpv3neon

-mfpu=neon selects VFPv3 with NEON coprocessor extensions.

gcc手册中,

如果选定的浮点硬件包括 NEON 扩展(例如-mfpu=neon),请注意浮点运算不会被 GCC 的自动矢量化传递使用,除非还指定了 `-funsafe-math-optimizations'。这是因为 NEON 硬件没有完全实现浮点运算的 IEEE 754 标准(特别是非正规值被视为零),因此使用 NEON 指令可能会导致精度损失。

例如,请参阅ios 上的 Subnormal IEEE-754 floating point numbers support ...了解有关此主题的更多信息。

于 2013-09-13T12:39:06.030 回答
0

我已经尝试了其中的每一个,似乎使用-mfpu=neonand 来指定-march=armv7-aand -mfloat-abi=softfp 是正确的配置。

此外,参考(ARM Cortex-A8 vs. Intel Atom)对 ARM BenchMark 非常有用。另一篇有用的文章是关于ARM Cortex-A 处理器和 gcc 命令行,它清除了 SIMD 协处理器配置。

于 2013-09-16T08:30:20.633 回答