AMD最近几年似乎是太Yes了,2016年到现在,股价从2块钱涨到40块钱,在很多地区的DIY市场份额超过英特尔,苏妈NB啊!

但在科学计算领域,CPU没有相关的配套软件支持是不行的。想自己组装个深度学习主机到底能不能上AMD?

该文章用numpy库对openblas和mkl简单测试,来回答这个问题。

目录

0. 基本概念

0.1 做深度学习还要看CPU吗?

0.2 什么是mkl与openblas?

0.3 AMD处理器用于深度学习为什么要注意这个问题?结论与openblas安装方法

2. 测试平台和方法

3. 英特尔平台测试结果

4. AMD平台测试结果

5. 小结

6. GPU测试结果

0. 基本概念

0.1 做深度学习还要看CPU吗?

要看,很多操作比如数据预处理一般是在CPU上完成的。

0.2 什么是mkl与openblas?

BLAS(Basic Linear Algebra Subprograms)即基础线性代数子程序库,可以理解为用于线性代数运算库的API。openblas和mkl是基于BLAS库的两个不同的线性运算库,python著名的numpy库底层就调用了mkl或者openblas.

0.3 AMD处理器用于深度学习为什么要注意这个问题?

因为conda装numpy和依赖numpy的库比如pytorch、tensorflow时会自动安装mkl库,而英特尔开发的mkl库对AMD处理器负优化啊!!

1.1 结论

写给太长不看党的。不过后面的测试确实可看可不看。AMD+openblas可以匹敌Intel+mkl,AMD处理器用于深度学习至少在mkl库这里不是问题。

英特尔处理器无脑选择mkl,AMD处理器必须卸掉mkl安装openblas!

我的测试结果显示,AMD 处理器下openblas的速度是mkl的两倍,AMD使用openblas和英特尔使用mkl速度相当,但我在英特尔平台+openblas的resize操作速度惨不忍睹,不清楚是什么问题。

虽然可以用,但(1)小白还是不要折腾了,选英特尔吧,用conda多舒服啊。(2)搞个人GPU工作站的话,自己愿意折腾选AMD没问题,多用户使用还是选英特尔,因为你自己编译玩的不亦乐乎,人家可不,况且还不给人家root权限......

1.2 openblas安装方法

我在Linux下使用系统python环境安装numpy直接就是基于openblas的。

Pytorch使用也没问题。

>>> import numpy as np

>>> np.__config__.show()

blas_mkl_info:

NOT AVAILABLE

blis_info:

NOT AVAILABLE

openblas_info:

libraries = ['openblas', 'openblas']

library_dirs = ['/usr/local/lib']

language = c

define_macros = [('HAVE_CBLAS', None)]

使用conda的安装方法推荐这一篇文章:xiedidan:AMD平台上配置PyTorch+Apex开发环境​zhuanlan.zhihu.com

查看numpy blas依赖:

import numpy as np

np.__config__.show()

>>>

blas_mkl_info:

NOT AVAILABLE

blis_info:

NOT AVAILABLE

openblas_info:

libraries = ['openblas', 'openblas']

library_dirs = ['/home/*/anaconda3/lib']

language = c

define_macros = [('HAVE_CBLAS', None)]

......

2.测试平台和方法

2.1 测试平台

英特尔: 志强 E5-2697 v3 @ 2.60GHz 14核

AMD : 锐龙 1500x @ 3.50Ghz 4核

再用GPU做个对比,GPU型号:

TITAN X (Pascal) x1

2.2 测试方法矩阵相乘 分别测试两个(50,50,50), (100,100,100),(150,150,150)尺寸的矩阵相乘

import numpy as np

from time import time

# 矩阵尺寸

d = 100

# 测试次数

times = 5

a = np.random.rand(d,d,d)

b = np.random.rand(d,d,d)

start = time()

for i in range (times):

c = np.dot(a,b)

end = time()

print('running time is :%f'%(end/times-start/times))

2. resize操作 分别将10000000维向量和80000000维向量resize到(100,200,500)和(200,400,1000)100次的时间。

对比操作GPU采用pytorch,做相同的运算。

import numpy as np

from time import time

times = 10

a = np.random.rand(10000000)

start = time()

for t in range(times):

for i in range(100):

b = np.resize(a,(100,200,500))

end = time()

print('running time is :%f'%(end/times-start/times))

3. 英特尔平台测试结果

3.1矩阵乘法

openblas

mkl

这里可以看到,openblas比mkl还快了很多。

3.2 Resize

openblas

mkl

这个结果很意外,openblas居然比mkl慢了这么多,不知道什么原因。

4. AMD平台测试结果

4.1矩阵乘法

openblas

mkl

4.2 Resize

openblas

mkl

5. 小结

上面两个测试结果可以看出:AMD平台下矩阵乘法和resize两个操作,openblas的速度均为mkl的两倍左右!!

单独对比(150,150,150)矩阵相乘速度:

3. 单独对比80000000维向量resize的速度:

可以看到E5+mkl的矩阵相乘速度比1500x+openblas慢(92.9s vs 75.7s),但resize的速度大幅超过1500x+openblas(2.6s vs 9.8s),多核心的优势显示出来了!! 由于两个平台不同,不能说mkl比openblas强。如果谁手上有i7-6700, i5-7600K,i5-8400这几款CPU可以测一下,这几款CPU的性能、核心数都和1500x相当。

6. GPU测试结果

这里并没有计算数据从内存加载到GPU上的时间(实际要花费不少时间)。但做深度学习你总得把数据放到GPU上,早放晚放都是放。

给跪了。以后能用GPU就用GPU吧……

amd python mkl_AMD用于深度学习到底Yes吗? 基于mkl和openblas的numpy运算速度小测与安装教程...相关推荐

  1. 30个顶级Python库 | 用于深度学习、自然语言处理和计算机视觉

    CDA数据分析师 出品 作者:Matthew Mayo 编译:Mika 今天我们来盘点一下有哪些用于深度学习.自然语言处理和计算机视觉的顶级Python库. 我们尽力将每个库按预期的使用情况进行归类, ...

  2. 30个顶级Python库:用于深度学习、自然语言处理和计算机视觉

    今天我们来盘点一下有哪些用于深度学习.自然语言处理和计算机视觉的顶级Python库. 我们尽力将每个库按预期的使用情况进行归类,希望这能对大家有所帮助. 显然,现在并不是所有的自然语言处理和计算机视觉 ...

  3. python爬取百度图片(用于深度学习中数据集的收集)

    6_python爬取百度图片(用于深度学习中数据集的收集)(6-20181225-) 参考: https://blog.csdn.net/guyuealian/article/details/7873 ...

  4. 深度学习到底有哪些卷积?

    深度学习到底有哪些卷积? 深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分/深度可分/平展/分组/混洗分组卷积),能帮理解实际的工作方式. 总结深度学 ...

  5. Python机器学习、深度学习库总结(内含大量示例,建议收藏)

    Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 目前,随着人工 ...

  6. Python机器学习、深度学习库总结

    Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 为了大家能够对 ...

  7. Python实现的深度学习技术在水文水质领域应用

    当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别.语音识别.自然语言处理等领域取得了显著的成效.它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发 ...

  8. 独家 | SVP:一种用于深度学习的高效数据选择方法

    作者:Cody Coleman, Peter Bailis, and Matei Zaharia 翻译:杨毅远 校对:王琦 本文长度为1800字,建议阅读7分钟 本文为你介绍SVP方法如何在保证识别准 ...

  9. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

最新文章

  1. php随机生成器加密,php生成随机密码的几种方法
  2. TCP/IP学习笔记(一)分层模型概述
  3. 十、request.getSession( )、reqeust.getSession(false)和 request.getSession(true)
  4. Python实现二分法搜索
  5. MVVM后台ViewModel添加DataGrid表头
  6. 在WPF中创建可换肤的用户界面
  7. LINUX:read命令
  8. python对象和类_Python面向对象(一)类与对象
  9. yaw公式_3D 视角旋转矩阵 yaw pitch roll (pan, tilt)的数学计算
  10. sql语句多条件查询语句拼接
  11. 松翰单片机--SN8F5702学习笔记(三)Overview
  12. 揭开演讲恐惧的五大“秘密”
  13. 一年级语文四季心田花开专项练习题
  14. 实数在计算机上存储,实数如何在内存中存储
  15. 深度学习相关概念:权重初始化
  16. JAVA网络编程、正则表达式
  17. 无人机倾斜影像建模哪个软件好
  18. 兴趣专业测试软件,霍兰德职业兴趣测试 在线工具
  19. [BZOJ1033][ZJOI2008]杀蚂蚁antbuster(大模拟)
  20. linux 当前登录用户及历史登录用户信息查询

热门文章

  1. 养成每天学习的好习惯
  2. gadget usb 增加端点
  3. 动态范围压缩如何改变音频?
  4. 我的世界java刷雪机_我的世界全自动刷雪机图文攻略
  5. 戴尔灵越3420拆机笔记
  6. Lava店铺音乐升级顾客体验
  7. 如何将微信聊天记录导出为pdf
  8. Adams中mnf文件绝对路径/相对路径问题
  9. Anki 但是Ubuntu
  10. pip安装Z3求解器