我一直在研究ARM部件的相对性能,发现很难进行比较。。。特别是对于新的A12、A17和64位A53和A57s;
到目前为止,我根据不同手机/平板电脑的Linpack评分得出的结果是:
- A9=32MFLOPS/核心/GHz
- A15=100 MFLOPS/核心/GHz
- 苹果A7=350 MFLOPS/核心/GHz(!)
因此出现了几个问题:
- A12、A17、A53、A57在哪里适合这个光谱
- 为什么苹果的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指令。我的近地天体结果是单精度的。