M1 芯片与 鲲鹏 920 数值计算性能对比

2021-04-23 17:28:07 +08:00
 YRInc

受此贴启发,除鲲鹏 920 外的数据也来自此贴: https://v2ex.com/t/733777

成绩对比选的是基于 Numpy 的数值计算( Neon SIMD 加速),测试脚本为:

https://gist.github.com/markus-beuckelmann/8bc25531b11158431a5b09a45abd6276

废话不多说,上成绩:

项目 M1 鲲鹏 920-12 核 鲲鹏 920-24 核 Core i9
4096x4096 矩阵乘法 0.53 s 1.48 s 0.76 s 0.45 s
524288 向量点积 0.25 ms 0.49 ms 0.48 ms 0.05 ms
2048x1024 SVD 0.59 s 1.10 s 0.93 s 0.32 s
2048x2048 Cholesky 分解 0.08 s 0.14 s 0.13 s 0.08 s
2048x2048 特征分解 4.74 s 8.36 s 7.66 s 3.53 s

结论:

由于是调用的底层加速库,Numpy 在数值计算方面可以有效使用多核进行运算。大体上看,哪怕是 24 核鲲鹏 920 的数值计算性能也比 M1 慢一半左右,向量乘法和 SVD 几乎慢一倍。

Core i9 是原帖网友 @pb941129 基于 16 寸 MBP i9 所得,由于数值计算是英特尔的传统强项,外加在 MKL 底层的加持下,各项方面性能均领先 M1 (原帖网友 @YUX 所测).

备注:

1 鲲鹏 920 是在华为云上测试的。

2 除 Core i9 外,Numpy 安装统一用的是 Miniforge,加速库配置为:

blas_info:
libraries = ['cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/root/miniforge3/lib']
include_dirs = ['/root/miniforge3/include']
language = c
define_macros = [('HAVE_CBLAS', None)]

blas_opt_info:
define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
libraries = ['cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/root/miniforge3/lib']
include_dirs = ['/root/miniforge3/include']
language = c

lapack_info:
libraries = ['lapack', 'blas', 'lapack', 'blas']
library_dirs = ['/root/miniforge3/lib']
language = f77

lapack_opt_info:
libraries = ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/root/miniforge3/lib']
language = c
define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
include_dirs = ['/root/miniforge3/include']
3326 次点击
所在节点    硬件
23 条回复
dabaibai
2021-04-24 16:21:57 +08:00
华为云上用的是独服吗?如果是云主机的话 毫无参考价值
datou
2021-04-25 13:40:06 +08:00
Dotted two 4096x4096 matrices in 0.67 s.
Dotted two vectors of length 524288 in 0.05 ms.
SVD of a 2048x1024 matrix in 0.96 s.
Cholesky decomposition of a 2048x2048 matrix in 0.28 s.
Eigendecomposition of a 2048x2048 matrix in 6.69 s.


3500X win10
neosfung
2021-04-25 16:28:50 +08:00
拿了 2019 年 16 寸 MacBook 和服务器分别测了一下,供参考

Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz * 2
Dotted two 4096x4096 matrices in 1.45 s.
Dotted two vectors of length 524288 in 0.17 ms.
SVD of a 2048x1024 matrix in 0.90 s.
Cholesky decomposition of a 2048x2048 matrix in 0.20 s.
Eigendecomposition of a 2048x2048 matrix in 8.83 s.

Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Dotted two 4096x4096 matrices in 0.73 s.
Dotted two vectors of length 524288 in 0.08 ms.
SVD of a 2048x1024 matrix in 0.52 s.
Cholesky decomposition of a 2048x2048 matrix in 0.09 s.
Eigendecomposition of a 2048x2048 matrix in 4.89 s.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX