A9、A12、A15、A17、A53等产品线的ARM浮点性能比较



我一直在研究ARM部件的相对性能,发现很难进行比较。。。特别是对于新的A12、A17和64位A53和A57s;

到目前为止,我根据不同手机/平板电脑的Linpack评分得出的结果是:

  • A9=32MFLOPS/核心/GHz
  • A15=100 MFLOPS/核心/GHz
  • 苹果A7=350 MFLOPS/核心/GHz(!)

因此出现了几个问题:

  1. A12、A17、A53、A57在哪里适合这个光谱
  2. 为什么苹果的A7浮点值这么好?这纯粹是由于64位内部结构,还是其他原因

这些Linpack结果是通过Java获得的。以下是我通过C和Java获得的Linpack结果。另请参阅以下内容,了解更多MFLOPS速度。

http://www.roylongbottom.org.uk/android%20benchmarks.htm

System   ARM    MHz   Android  Linpackv5  Linpackv7  LinpackSP NEONLinpack LinpackJava
MFLOPS     MFLOPS     MFLOPS     MFLOPS     MFLOPS
T1    926EJ    800       2.2      5.63       5.67       9.61       N/A        2.33
P4    v7-A8    800     2.3.5                80.18                            28.34 @G
T2    v7-A9    800     2.3.4     10.56     101.39     129.05     255.77      33.36
P5    v7-A9   1500     4.0.3               171.39                            50.87 @G
T4    v7-A9   1500a    4.0.3     16.86     155.52     204.61     382.46      56.89
T6    v7-A9   1600     4.0.3               196.47
T7    v7-A9   1300a    4.1.2     17.08     151.05     201.30     376.00      56.44
T9    926EJ    800       2.2      5.66
T11   v7-A15  2000b    4.2.2     28.82     459.17     803.04    1334.90     143.06
T12   v7-A9   1600     4.1.2               147.07
T14   v7-A9   1500     4.0.4               180.95
P11   v7-A9   1400     4.0.4     19.89     184.44     235.54     454.21      56.99
P10   QU-S4   1500     4.0.3               254.90
Measured MHz a=1200, b=1700 
System - T = Tablet, P = Phone, E = Emulator, @G = GreenComputing, QU = Qualcomm CPU

我不确定这些数字是从哪里得到的,但它们根本不能反映硬件的功能。例如,Cortex-A9可以在每个周期执行双精度触发器;即1GFLOP/核心/GHz。通过LAPACK和BLAS的良好实现,您可以在linpack上实现700+MFLOP/Core/GHz。这比你报告的数字快20倍。Cortex-A15和Apple A7的功能要强大得多。

我希望您运行的是一些随机的"linpack基准测试",而不是架构调优的实现。你不是在衡量硬件的FP能力;你正在通过一些随机开发人员代码的质量以及JIT和用于编译/执行程序的运行时或编译器的质量来衡量这一点。

除非确定CPU型号和实际工作GHz,否则无法理解这些比较基准图表。还有一些未确定的变量,如缓存大小和内存速度。例如,Galaxy S4可以具有ARM或Snapdragon CPU、不同数量的内核和不同的GHz规格(它们可能无法运行)。然后应该确定基准的来源。即使它们是从同一个C代码编译的,您也不能总是信任特定供应商提供或调优的编译。

一个很好的例子是我非常熟悉的Linpack基准测试。我的PC原始C版本已被原始基准测试的作者Jack Dongarra接受,并可在Netlib(以及我的网站)上获得。有两个基本版本(加上其他用于并行处理器的版本)。除了MP版本外,我最初的所有Linpack基准测试都使用了Linpack 1的固定方法,矩阵为100阶。第二个版本用于求解1000阶方程组,对方法或其实现没有限制。这可以证明特定架构或聪明数学家的优势,通常可以反映MP性能。

最受欢迎的Androids/Java Linpack版本来自GreeneComputing。根据数值结果,这是双倍精度,可能是N=500。我对MP版本持怀疑态度。它会产生与单个CPU版本不同的数字结果(Norm Res),两者都可以指示"精度不一致的结果",并使我的平板电脑与Cortex A15 CPU崩溃。

我有一个单CPU和多线程的Linpack版本,都使用了Linpack 1的固定方法,现在可以从N=100以上运行。由于使用RAM数据而不是高速缓存,这些数据可能会随着N的增加而变慢。MP版本的速度慢得可怜,但至少会产生相同的Norm Res值。

Apple版本的输入变量中有N。我发现的一组结果表明,N=100 118 MFLOPS,N=500 737 MFLOPS和N=1000 918 MFLOPS。N=500可能被引用,但不适合与我的结果进行比较。

A7比早期的苹果内核更快的一个原因是提供了双精度NEON指令。我的近地天体结果是单精度的。

最新更新