如果我问的是非常明显的问题,我深表歉意。
假设您正在设计一个浮点计算量很大的软件,并且您可以购买自己的硬件。假设您出于灵活性和易于代码维护的原因排除了 FPGA 和 GPU。
进一步假设您在软件中具有不错的并行度。
很长一段时间以来,这意味着您一直在使用 x86。
我正在寻找一个客观的基准测试来判断现代 ARM CPU 是否在同一个范围内。也许我的搜索有误,但我发现很难找到值得信赖的基准测试(例如 LAPACK 或某些物理模拟)。我知道性能显然取决于任务,并且编译器优化目前可能比 x86 更好,但在这个阶段,我真的希望比较数量级。
此外,我觉得奇怪的是,您不能真正购买类似于树莓派 PI 的东西,但它拥有 8-64 个现代内核,可与连接到单个总线的最新智能手机(如最新的 Snapdragon)相媲美。如果我弄错了,请纠正我,但这样的解决方案有朝一日可能会超越 FLOPS/$ 类别中的 GPU,而且更加灵活。
最佳答案
以下是我通过 Linux、Raspberry Pi 和 Android 设备对 PC 进行的 Linpack 基准测试结果(我有更多通过 Windows 获得的结果)。这些是基于我的 C/C++ 1996 转换的个人电脑,它得到了原作者 Jack Dongarra 的批准,并且可以通过以下方式获得。
http://www.netlib.no/netlib/benchmark/linpack-pc.c
这是一个 100 阶的矩阵, double 。下面的结果包括一些单精度。 Dongarra 在此和 super 计算机品种方面的历史性成果如下:
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.
############################################### ####
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
关于ARM 与 x86 的浮点运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26654638/