调试经验——Ryzen vs i7(AMD锐龙处理器与Intel i7处理器性能对比)
在运行深度学习案例时,无意中发现Ryzen处理器性能竟然要比i7高好几倍!
Ryzen: AMD Ryzen 5 4500U with Radeon Graphics, 2.38 GHz
i7: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60 GHz 2.59 GHz
参考文章:吴恩达深度学习学习笔记——C1W2——神经网络基础——作业1——Python及Numpy基础
https://blog.csdn.net/hpdlzu80100/article/details/113007293
测试代码:
传统方法(classic):
import timex1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]### CLASSIC DOT PRODUCT OF VECTORS IMPLEMENTATION ###
tic = time.process_time()
dot = 0
iterations = 10000
for k in range (iterations):for i in range(len(x1)):dot+= x1[i]*x2[i]
toc = time.process_time()
print ("dot = " + str(dot) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### CLASSIC OUTER PRODUCT IMPLEMENTATION ###
tic = time.process_time()
outer = np.zeros((len(x1),len(x2))) # we create a len(x1)*len(x2) matrix with only zeros
for k in range (iterations):for i in range(len(x1)):for j in range(len(x2)):outer[i,j] = x1[i]*x2[j]
toc = time.process_time()
print ("outer = " + str(outer) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### CLASSIC ELEMENTWISE IMPLEMENTATION ###
tic = time.process_time()
mul = np.zeros(len(x1))
for k in range (iterations):for i in range(len(x1)):mul[i] = x1[i]*x2[i]
toc = time.process_time()
print ("elementwise multiplication = " + str(mul) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### CLASSIC GENERAL DOT PRODUCT IMPLEMENTATION ###
W = np.random.rand(3,len(x1)) # Random 3*len(x1) numpy array
tic = time.process_time()
gdot = np.zeros(W.shape[0])
for k in range (iterations):for i in range(W.shape[0]):for j in range(len(x1)):gdot[i] += W[i,j]*x1[j]
toc = time.process_time()
print ("gdot = " + str(gdot) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")
向量化方法(vectorization):
x1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]### VECTORIZED DOT PRODUCT OF VECTORS ###
tic = time.process_time()
iterations = 10000
for k in range (iterations):dot = np.dot(x1,x2)
toc = time.process_time()
print ("dot = " + str(dot) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### VECTORIZED OUTER PRODUCT ###
tic = time.process_time()
for k in range (iterations):outer = np.outer(x1,x2)
toc = time.process_time()
print ("outer = " + str(outer) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### VECTORIZED ELEMENTWISE MULTIPLICATION ###
tic = time.process_time()
for k in range (iterations):mul = np.multiply(x1,x2)
toc = time.process_time()
print ("elementwise multiplication = " + str(mul) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")### VECTORIZED GENERAL DOT PRODUCT ###
tic = time.process_time()
for k in range (iterations):dot = np.dot(W,x1)
toc = time.process_time()
print ("gdot = " + str(dot) + "\n ----- Computation time = " + str(1000*(toc - tic)) + "ms")
测试结果:
iterations = 10000 | ||||
CPU | dot | outer | mul | gdot |
i7_classic | 140.625 | 2437.5 | 171.875 | 1343.75 |
i7_vectorization | 187.5 | 250 | 156.25 | 93.75 |
i7_classic per iteration | 0.014063 | 0.24375 | 0.017188 | 0.134375 |
i7_vectorization per iteration | 0.01875 | 0.025 | 0.015625 | 0.009375 |
Ryzen_classic | 15.625 | 718.75 | 31.25 | 421.875 |
Ryzen_vectorization | 46.875 | 93.75 | 46.875 | 31.25 |
Ryzen_classic per iteration | 0.001563 | 0.071875 | 0.003125 | 0.042188 |
Ryzen_vectorization per iteration | 0.004688 | 0.009375 | 0.004688 | 0.003125 |
vectorization improvement | ||||
i7 | 0.75 | 9.75 | 1.1 | 14.33333 |
Razen | 0.333333 | 7.666667 | 0.666667 | 13.5 |
CPU compare (Ryzen vs i7) | ||||
classic | 9 | 3.391304 | 5.5 | 3.185185 |
vectorization | 4 | 2.666667 | 3.333333 | 3 |
测试结论:
用classic方法进行四种运算(dot, outer, mul, gdot)测试,Ryzen性能是i7的3倍以上,最高达9倍
用vectorization方法进行四种运算(dot, outer, mul, gdot)测试,Ryzen性能是i7的2倍以上,最高达4倍
这个结果真是让我大吃一惊,难道家里的i7电脑已经被公司电脑吊打了?
原始测试数据:
i7 - classic - raw data
dot = 2780000
----- Computation time = 140.625ms
outer = [[81. 18. 18. 81. 0. 81. 18. 45. 0. 0. 81. 18. 45. 0. 0.]
[18. 4. 4. 18. 0. 18. 4. 10. 0. 0. 18. 4. 10. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[63. 14. 14. 63. 0. 63. 14. 35. 0. 0. 63. 14. 35. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[81. 18. 18. 81. 0. 81. 18. 45. 0. 0. 81. 18. 45. 0. 0.]
[18. 4. 4. 18. 0. 18. 4. 10. 0. 0. 18. 4. 10. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
----- Computation time = 2437.5ms
elementwise multiplication = [81. 4. 10. 0. 0. 63. 10. 0. 0. 0. 81. 4. 25. 0. 0.]
----- Computation time = 171.875ms
gdot = [195729.74508604 317852.95629331 243716.93089645]
----- Computation time = 1343.75ms
i7 - vectorization - raw data
dot = 278
----- Computation time = 187.5ms
outer = [[81 18 18 81 0 81 18 45 0 0 81 18 45 0 0]
[18 4 4 18 0 18 4 10 0 0 18 4 10 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[63 14 14 63 0 63 14 35 0 0 63 14 35 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[81 18 18 81 0 81 18 45 0 0 81 18 45 0 0]
[18 4 4 18 0 18 4 10 0 0 18 4 10 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
----- Computation time = 250.0ms
elementwise multiplication = [81 4 10 0 0 63 10 0 0 0 81 4 25 0 0]
----- Computation time = 156.25ms
gdot = [19.57297451 31.78529563 24.37169309]
----- Computation time = 93.75ms
Razen - classic - raw data
dot = 2780000
----- Computation time = 15.625ms
outer = [[81. 18. 18. 81. 0. 81. 18. 45. 0. 0. 81. 18. 45. 0. 0.]
[18. 4. 4. 18. 0. 18. 4. 10. 0. 0. 18. 4. 10. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[63. 14. 14. 63. 0. 63. 14. 35. 0. 0. 63. 14. 35. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[81. 18. 18. 81. 0. 81. 18. 45. 0. 0. 81. 18. 45. 0. 0.]
[18. 4. 4. 18. 0. 18. 4. 10. 0. 0. 18. 4. 10. 0. 0.]
[45. 10. 10. 45. 0. 45. 10. 25. 0. 0. 45. 10. 25. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
----- Computation time = 718.75ms
elementwise multiplication = [81. 4. 10. 0. 0. 63. 10. 0. 0. 0. 81. 4. 25. 0. 0.]
----- Computation time = 31.25ms
gdot = [229870.73793486 240137.20984987 108019.8698111 ]
----- Computation time = 421.875ms
Razen - vectorization - raw data
dot = 278
----- Computation time = 46.875ms
outer = [[81 18 18 81 0 81 18 45 0 0 81 18 45 0 0]
[18 4 4 18 0 18 4 10 0 0 18 4 10 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[63 14 14 63 0 63 14 35 0 0 63 14 35 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[81 18 18 81 0 81 18 45 0 0 81 18 45 0 0]
[18 4 4 18 0 18 4 10 0 0 18 4 10 0 0]
[45 10 10 45 0 45 10 25 0 0 45 10 25 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
----- Computation time = 93.75ms
elementwise multiplication = [81 4 10 0 0 63 10 0 0 0 81 4 25 0 0]
----- Computation time = 46.875ms
gdot = [22.98707379 24.01372098 10.80198698]
----- Computation time = 31.25ms
调试经验——Ryzen vs i7(AMD锐龙处理器与Intel i7处理器性能对比)相关推荐
- 锐龙4000系列运行matlab,修复了!AMD锐龙运行Matlab恢复正常,性能提升60%
原标题:修复了!AMD锐龙运行Matlab恢复正常,性能提升60% Matlab是美国MathWorks出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算等用途.在2020a版本中,M ...
- ”AMD锐龙3000上市 Intel酷睿i5-9600K处理器大降价
昨天有篇文章提到了AMD的7nm锐龙3000处理器来势汹汹,Intel要如何应对的问题,单从产品角度来看,锐龙3000不论单核还是多核性能都有提升,特别是单核及游戏性能可以说追平了Intel,价格还低 ...
- amd锐龙笔记本cpu怎么样_AMD锐龙4000系列笔记本CPU的一些信息(整理)
据外媒报道,渠道独家消息称,10代酷睿H系列标压移动版处理器(Comet Lake)将在3月中旬出货上市,AMD锐龙4000系列(Renoir)笔记本处理器则会在3月或者4月份登陆. Comet La ...
- 强强联手 传奇再续:戴尔及ALIENWARE推出全新AMD锐龙游戏本
科技改变生活,随着软硬件技术的发展,移动端的手游占据了人们日常娱乐的大部分时间.但是对于真正的游戏玩家们而言,电脑端才是游戏释放魅力的最佳平台. 为了满足玩家们体验史诗级大型游戏时严苛的性能需求,戴尔 ...
- 打造沉浸式游戏体验,戴尔及ALIENWARE推出全新AMD锐龙游戏本
随着电竞产业的飞速发展,游戏本市场的发展日新月异,各种新技术层出不穷.沉浸式体验成为游戏本的一大发展趋势. 4月8日,戴尔及ALIENWARE携手AMD.NVIDIA强强联合,发布两款全新游戏本--性 ...
- linux下amd超频工具,AMD锐龙自动超频工具ClockTuner for Ryzen
AMD锐龙自动超频工具ClockTuner for Ryzen为用户提供了非常强大的超频能力,性能之高让它近几年异常火爆,它能帮助DIY玩家不用再去BIOS中设置调试再回到Windows测试超频结果, ...
- 入手评测AMD锐龙r7 6800u和酷睿i7 1260p选哪个 r76800u和i71260p对比
aMD 锐龙 7 6800U 处理器,采用全新的 Zen3 + 架构,6nm 制程工艺,8 大核 16 线程,最大加速时钟频率可达 4.7GHz,三级缓存 16MB.锐龙 7 6800U 处理器核显为 ...
- amd锐龙笔记本cpu怎么样_不知不觉已经15款 AMD Ryzen锐龙笔记本处理器盘点
在笔记本领域,AMD近些年一直处于英特尔的阴影之下,一句"i3秒全家"足以道出AMD的辛酸.终于,随着AMD祭出全新的"Ryzen"(锐龙)移动处理器平台之后, ...
- ryzen7能否安装linux,AMD 锐龙(Ryzen)7 装win7系统及bios设置教程(完美支持)
[文章导读]我们最新有网友问我AMD Ryzen7 5800X cpu能装win7吗?答案是可以的,需要采用win7新机型安装,且要开启兼容选择,如果是NVME接口的固态硬盘,安装WIN7过程中会出现 ...
- ryzen linux 搭配显卡,AMD锐龙Ryzen5 2600X配什么显卡好?锐龙R5-2600X最佳显卡搭配知识...
众所周知,AMD发布的锐龙二代处理器显得基于游戏.设计平台,因为没有内置核显,需要搭配独立显卡使用.那么AMD锐龙Ryzen5 2600X配什么显卡好?下面装机之家分享一下锐龙R5-2600X最佳显卡 ...
最新文章
- 个人对继承理解以及虚析构函数的理解
- 56. Netty源代码分析-服务器初始化 NioEventLoopGroup实例化
- springboot源码分析 - AbstractRoutingDataSource多数据源方案的分析
- (63)0环与3环通信非常规方式 —— 0环InlineHook
- 大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域
- python中的用法_Python中使用@的理解
- 如何看待 2020 届校招算法岗「爆炸」的情况?英雄所见略同
- JPG,动态GIF,BMP一些常用解决办法
- 前端代码编辑器:sublime text 4 for Mac v4115中文版
- app前后台交互php_PHP分布式架构RPC介绍以及手写RPC框架
- 恢复oracle数据步骤,通过数据泵expdp、impdp方式备份与还原/恢复 Oracle数据库(详细过程)-Oracle...
- Proteus软件仿真学习——整流桥电路
- 浅谈手机接收性能的测试
- 5分钟实现微信云小程序支付功能(含源码)
- 非IE浏览器实现IE功能(浏览器加载OCX控件)——IE Tab
- 调色板类型、调色板模式、调色板压缩算法是什么意思?(调色板就是一个颜色的索引表)
- 两个冲击函数相乘的傅里叶变换_通信第三章常见函数的傅里叶变换.ppt
- 使用Vlookup函数对数据进行分组
- vba formula 公式的引用
- MOS管的行业应用领域-KIA MOS管
热门文章
- 虚存的用法计算机组成原理,计算机组成原理_第8讲:虚拟存储-2015秋.pdf
- [C# 反射] Type 格式化FullName
- Qt中嵌入web网页的几种实现方式
- 高德地图api 点聚合+海量点+点击事件(根据地区或坐标进行定位)
- 网站流量统计名词解释
- “ERR_NAME_NOT_RESOLVED“ : 如何在 Google Chrome 浏览器中修复此 DNS 错误
- ssh:手机Termux与电脑连接
- java审批待办页面跳转设计,OA工作流引擎设计(纯java开发,不需要额外任何插件引擎)...
- XAI人工智能可视化管理系统.docx
- 汽车美容养护店数字化升级,看音克如何赋能门店经营及增强会员消费