ARM vs x86用于浮点

ziu*_*tek 3 hardware arm system scientific-computing numerical-methods

如果我问一些非常明显的事情,我道歉.

假设您正在设计一个浮点计算繁重的软件,您可以购买自己的硬件.假设您出于灵活性和易于代码维护的原因而排除FPGA和GPU.

进一步假设您在软件中具有相当水平的并行性.

很长一段时间,这意味着你被x86困住了.

我正在寻找一个客观的基准测试,可以判断现代ARM CPU是否在同一个球场.也许我找错了,但我发现很难找到一个值得信赖的基准(比如LAPACK或者某些物理模拟).我知道性能显然取决于任务,编译器优化目前可能会更好x86,但在这个阶段我真的想要比较数量级.

此外,我觉得很奇怪,你不能真正购买覆盆子PI的东西,但8-64现代核心可以与连接到单一总线的最新智能手机(如最新的Snapdragons)相媲美.如果我弄错了,请纠正我,但这样的解决方案可能有一天会超越FLOPS/$类别中的GPU而且更灵活.

Roy*_*tom 6

以下是我通过Linux,Raspberry Pi和Android设备获得PC的Linpack Benchmark结果(我还有更多来自Windows).这些是基于我的C/C++ 1996转换PC,由原作者Jack Dongarra批准,并可通过.

http://www.netlib.no/netlib/benchmark/linpack-pc.c

这是针对100阶的矩阵,双精度.以下结果包括一些单精度.Dongarra对这款和超级计算机品种的历史性成果包括:

http://netlib.org/benchmark/performance.pdf

这只是一个基准,其他人给出了不同的故事.您可以从我的网站获得更多,包括源代码和MP品种,(免费,无广告):

http://www.roylongbottom.org.uk/

Linux 32/64 Bit Results

Double Precision 100x100 compiled at 32 and 64 bits 

                                   Opt    No opt
CPU                      MHz    MFLOPS    MFLOPS

Atom N455     32b  Ub   1666       196        94
Atom N455     64b  Ub   1666       226        89

Core 2 Mob    32b  Ub   1830       983       307

Athlon 64     32b  Ub   2211       936       231
Athlon 64     64b  Ub   2211      1118       221

Core 2 Duo    32b  Ub   2400      1288       404
Core 2 Duo    64b  Ub   2400      1577       378

Phenom II     32b  Ub   3000      1464       411
Phenom II     64b  Ub   3000      1887       411
Phenom II     64b  Fe   3000      1872       407

Core i7 930   64b  Ub   ****      2265       511

Core i7 4820K 32b  Ub   $$$1      2534       988
Core i7 4820K 64b  Ub   $$$1      3672       900
Core i7 4820K AVX  Ub   $$$12     5413       935

  Ub = Ubuntu Linux,   Fe = Fedora Linux        
 ****  Rated as 2800 MHz but running at up to   
       3066 MHz using Turbo Boost               
 $$$1  Rated as 3700 MHz but running at up to   
       3900 MHz, using Turbo Boost              
 $$$12 As $$$1, but compiled with GCC 4.8.2 that
       produces AVX SIMD insructions.               
Run Code Online (Sandbox Code Playgroud)

################################################## ####

      Android and Raspberry Pi Versions

Double Precision and Single Precision (SP) 100x100

                               v7/v5       v5 
CPU          MHz   Android    MFLOPS    MFLOPS

ARM 926EJ    800       2.2       5.7       5.6
ARM v7-A8    800     2.3.5      80.2          
ARM v7-A9    800     2.3.4     101.4      10.6
ARM v7-A9   1300a    4.1.2     151.1      17.1
ARM v7-A9   1500     4.0.3     171.4          
ARM v7-A9   1500a    4.0.3     155.5      16.9
ARM v7-A9   1400     4.0.4     184.4      19.9
ARM v7-A9   1600     4.0.3     196.5          
ARM v7-A15  2000b    4.2.2     459.2      28.8

                               v7 SP     Java 
CPU          MHz   Android    MFLOPS    MFLOPS

ARM 926EJ    800       2.2       9.6       2.3
ARM v7-A9    800     2.3.4     129.1      33.3
ARM v7-A9   1300a    4.1.2     201.3      56.4
ARM v7-A9   1500a    4.0.3     204.6      56.9
ARM v7-A9   1400     4.0.4     235.5      57.0
ARM v7-A15  2000b    4.2.2     803.0     143.1


Atom   Ax86 1666     2.2.1                15.7
Core 2 Ax86 2400     2.2.1                53.3

Raspberry Pi                    DP        SP  
CPU          MHz     Linux    MFLOPS    MFLOPS

ARM  1176    700     3.6.11     42        58  
ARM  1176   1000     3.6.11     68        88  

                              NEON SP         
CPU          MHz   Android    MFLOPS          

ARM v7-A9    800     2.3.4     255.8          
ARM v7-A9   1300a    4.1.2     376.0          
ARM v7-A9   1500a    4.0.3     382.5          
ARM v7-A9   1400     4.0.4     454.2          
ARM v7-A15  2000b    4.2.2    1334.9        
Run Code Online (Sandbox Code Playgroud)