M1与i9在科学计算的性能比较【持续更新中】

前言

最近外勤越来越多,于是手里这台15寸的MBP就显得略笨重了,所以就整了一台新的Air外出使用,16+256,因为是附机所以没有存储需求,但是没有选低配是因为看了看之前的MBP基本上物理内存使用都在10GB以上,而且SoC完全没有扩展能力,所以不得不接受了性价比极低的¥1500/+8GB选项。

到手之后自然就开始折腾,为什么对ARM架构的PC没有太犹豫也是因为作为一个喜欢折腾的人之前一直挺难受,一直以来为了保证生产力所有系统和软件都不得不使用稳定版而且轻易不敢更新版本。而现在这小家伙只要保证可以打开pdf可以播放幻灯片就可以了。

兼容性基本上还是挺遗憾的。

python3

- with numpy pandas sklearn pytorch ...

Rossetta
JetBrain KitsRossetta
gcc/g++fine,系统自带
gdbX
MATLAB 2020bRossetta
DockerX
lib fftw3fine 源码编译安装
lib Eigenfine 
cmakefine 源码编译安装arm版本
Homebrew待验证
  

 

 

 

 

 

 

 

 

 

 

 

 

不过既然python和c/cpp都能顺利的运行起来,自然就想比较一下M1和i9的常规运算性能了。

硬件参数

  • M1

8 core CPU, 7 core GPU, 16GB内存

  • i9

2.3G 8 core CPU, Radeon Pro 560X 4GB, 16GB 2400MHz DDR4

 

1. 浮点计算

import numpy as np
import time

t1 = time.time()
a = np.random.rand(30000,30000)

t2 = time.time()
b = a*a

t3 = time.time()
c = np.sum(b)

t4 = time.time()

print(c)

print('alloc a: ',t2-t1,'s')
print('mat * mat : ',t3-t2,'s')
print('mat sum: ',t4-t3,'s')

 结果

  • M1

alloc a:  7.2 s

mat * mat :  10.7 s

mat sum:  12.9 s

  • i9

alloc a:  7.5 s

mat * mat :  12.9 s

mat sum:  21.1 s

 

上边的运算参数都保证了没有产生内存交换文件(运算期间最高内存占用约13.5GB),出乎意料M1快挺多,而且目前python还是Rossetta版本。

 

2. 多线程计算

用Numpy的SVD来评估,因为这个SVD会根据core数量采用多线程计算。

import numpy as np
import time

t1 = time.time()
a = np.random.rand(5000,5000)

t2 = time.time()
u,s,v = np.linalg.svd(a)
t3 = time.time()

print('alloc a: ',t2-t1,'s')
print('svd : ',t3-t2,'s')

结果

  • M1

alloc a:  0.21 s

svd :  46.5 s

  • i9

alloc a:  0.22 s

svd :  56.87 s

 

跟上一个测试的乘法时间是等比的,因为SVD的线程数量和线程逻辑都简单,所以实际上这个测试验证的还是CPU的浮点效率。

 

3. 内存分配

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main(void)
{
	int t1 = time(0);
	int i;
	for(i=0;i<1024*1024;i++){
    char* m1 = (char*)malloc(2*1000*1000*1000);
    char* m2 = (char*)malloc(2*1000*1000*1000);
    char* m3 = (char*)malloc(2*1000*1000*1000);
    //m[i]=i;
    free(m3);
    free(m2);
    free(m1);
    }
    int t2 = time(0);
    printf("use time:%d s \n", t2-t1);
	return 0;
}

结果

  • M1

7s

  • i9

12s

  • M1 Rossetta ( i9编译的binary到M1运行)

8s

 

 

 

4. 内存读写

 

5. 线程效率 

 

6. GPU 图形

 

7.  视频

 

8. Regression

 

9. CNN 

 

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值