amd python mkl_AMD用于深度学习到底Yes吗? 基于mkl和openblas的numpy运算速度小测与安装教程...
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运算速度小测与安装教程...相关推荐
- 30个顶级Python库 | 用于深度学习、自然语言处理和计算机视觉
CDA数据分析师 出品 作者:Matthew Mayo 编译:Mika 今天我们来盘点一下有哪些用于深度学习.自然语言处理和计算机视觉的顶级Python库. 我们尽力将每个库按预期的使用情况进行归类, ...
- 30个顶级Python库:用于深度学习、自然语言处理和计算机视觉
今天我们来盘点一下有哪些用于深度学习.自然语言处理和计算机视觉的顶级Python库. 我们尽力将每个库按预期的使用情况进行归类,希望这能对大家有所帮助. 显然,现在并不是所有的自然语言处理和计算机视觉 ...
- python爬取百度图片(用于深度学习中数据集的收集)
6_python爬取百度图片(用于深度学习中数据集的收集)(6-20181225-) 参考: https://blog.csdn.net/guyuealian/article/details/7873 ...
- 深度学习到底有哪些卷积?
深度学习到底有哪些卷积? 深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分/深度可分/平展/分组/混洗分组卷积),能帮理解实际的工作方式. 总结深度学 ...
- Python机器学习、深度学习库总结(内含大量示例,建议收藏)
Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 目前,随着人工 ...
- Python机器学习、深度学习库总结
Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 为了大家能够对 ...
- Python实现的深度学习技术在水文水质领域应用
当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别.语音识别.自然语言处理等领域取得了显著的成效.它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发 ...
- 独家 | SVP:一种用于深度学习的高效数据选择方法
作者:Cody Coleman, Peter Bailis, and Matei Zaharia 翻译:杨毅远 校对:王琦 本文长度为1800字,建议阅读7分钟 本文为你介绍SVP方法如何在保证识别准 ...
- 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你
机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...
最新文章
- php随机生成器加密,php生成随机密码的几种方法
- TCP/IP学习笔记(一)分层模型概述
- 十、request.getSession( )、reqeust.getSession(false)和 request.getSession(true)
- Python实现二分法搜索
- MVVM后台ViewModel添加DataGrid表头
- 在WPF中创建可换肤的用户界面
- LINUX:read命令
- python对象和类_Python面向对象(一)类与对象
- yaw公式_3D 视角旋转矩阵 yaw pitch roll (pan, tilt)的数学计算
- sql语句多条件查询语句拼接
- 松翰单片机--SN8F5702学习笔记(三)Overview
- 揭开演讲恐惧的五大“秘密”
- 一年级语文四季心田花开专项练习题
- 实数在计算机上存储,实数如何在内存中存储
- 深度学习相关概念:权重初始化
- JAVA网络编程、正则表达式
- 无人机倾斜影像建模哪个软件好
- 兴趣专业测试软件,霍兰德职业兴趣测试 在线工具
- [BZOJ1033][ZJOI2008]杀蚂蚁antbuster(大模拟)
- linux 当前登录用户及历史登录用户信息查询