在运行深度学习案例时,无意中发现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处理器性能对比)相关推荐

  1. 锐龙4000系列运行matlab,修复了!AMD锐龙运行Matlab恢复正常,性能提升60%

    原标题:修复了!AMD锐龙运行Matlab恢复正常,性能提升60% Matlab是美国MathWorks出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算等用途.在2020a版本中,M ...

  2. ”AMD锐龙3000上市 Intel酷睿i5-9600K处理器大降价

    昨天有篇文章提到了AMD的7nm锐龙3000处理器来势汹汹,Intel要如何应对的问题,单从产品角度来看,锐龙3000不论单核还是多核性能都有提升,特别是单核及游戏性能可以说追平了Intel,价格还低 ...

  3. amd锐龙笔记本cpu怎么样_AMD锐龙4000系列笔记本CPU的一些信息(整理)

    据外媒报道,渠道独家消息称,10代酷睿H系列标压移动版处理器(Comet Lake)将在3月中旬出货上市,AMD锐龙4000系列(Renoir)笔记本处理器则会在3月或者4月份登陆. Comet La ...

  4. 强强联手 传奇再续:戴尔及ALIENWARE推出全新AMD锐龙游戏本

    科技改变生活,随着软硬件技术的发展,移动端的手游占据了人们日常娱乐的大部分时间.但是对于真正的游戏玩家们而言,电脑端才是游戏释放魅力的最佳平台. 为了满足玩家们体验史诗级大型游戏时严苛的性能需求,戴尔 ...

  5. 打造沉浸式游戏体验,戴尔及ALIENWARE推出全新AMD锐龙游戏本

    随着电竞产业的飞速发展,游戏本市场的发展日新月异,各种新技术层出不穷.沉浸式体验成为游戏本的一大发展趋势. 4月8日,戴尔及ALIENWARE携手AMD.NVIDIA强强联合,发布两款全新游戏本--性 ...

  6. linux下amd超频工具,AMD锐龙自动超频工具ClockTuner for Ryzen

    AMD锐龙自动超频工具ClockTuner for Ryzen为用户提供了非常强大的超频能力,性能之高让它近几年异常火爆,它能帮助DIY玩家不用再去BIOS中设置调试再回到Windows测试超频结果, ...

  7. 入手评测AMD锐龙r7 6800u和酷睿i7 1260p选哪个 r76800u和i71260p对比

    aMD 锐龙 7 6800U 处理器,采用全新的 Zen3 + 架构,6nm 制程工艺,8 大核 16 线程,最大加速时钟频率可达 4.7GHz,三级缓存 16MB.锐龙 7 6800U 处理器核显为 ...

  8. amd锐龙笔记本cpu怎么样_不知不觉已经15款 AMD Ryzen锐龙笔记本处理器盘点

    在笔记本领域,AMD近些年一直处于英特尔的阴影之下,一句"i3秒全家"足以道出AMD的辛酸.终于,随着AMD祭出全新的"Ryzen"(锐龙)移动处理器平台之后, ...

  9. ryzen7能否安装linux,AMD 锐龙(Ryzen)7 装win7系统及bios设置教程(完美支持)

    [文章导读]我们最新有网友问我AMD Ryzen7 5800X cpu能装win7吗?答案是可以的,需要采用win7新机型安装,且要开启兼容选择,如果是NVME接口的固态硬盘,安装WIN7过程中会出现 ...

  10. ryzen linux 搭配显卡,AMD锐龙Ryzen5 2600X配什么显卡好?锐龙R5-2600X最佳显卡搭配知识...

    众所周知,AMD发布的锐龙二代处理器显得基于游戏.设计平台,因为没有内置核显,需要搭配独立显卡使用.那么AMD锐龙Ryzen5 2600X配什么显卡好?下面装机之家分享一下锐龙R5-2600X最佳显卡 ...

最新文章

  1. 个人对继承理解以及虚析构函数的理解
  2. 56. Netty源代码分析-服务器初始化 NioEventLoopGroup实例化
  3. springboot源码分析 - AbstractRoutingDataSource多数据源方案的分析
  4. (63)0环与3环通信非常规方式 —— 0环InlineHook
  5. 大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域
  6. python中的用法_Python中使用@的理解
  7. 如何看待 2020 届校招算法岗「爆炸」的情况?英雄所见略同
  8. JPG,动态GIF,BMP一些常用解决办法
  9. 前端代码编辑器:sublime text 4 for Mac v4115中文版
  10. app前后台交互php_PHP分布式架构RPC介绍以及手写RPC框架
  11. 恢复oracle数据步骤,通过数据泵expdp、impdp方式备份与还原/恢复 Oracle数据库(详细过程)-Oracle...
  12. Proteus软件仿真学习——整流桥电路
  13. 浅谈手机接收性能的测试
  14. 5分钟实现微信云小程序支付功能(含源码)
  15. 非IE浏览器实现IE功能(浏览器加载OCX控件)——IE Tab
  16. 调色板类型、调色板模式、调色板压缩算法是什么意思?(调色板就是一个颜色的索引表)
  17. 两个冲击函数相乘的傅里叶变换_通信第三章常见函数的傅里叶变换.ppt
  18. 使用Vlookup函数对数据进行分组
  19. vba formula 公式的引用
  20. MOS管的行业应用领域-KIA MOS管

热门文章

  1. 虚存的用法计算机组成原理,计算机组成原理_第8讲:虚拟存储-2015秋.pdf
  2. [C# 反射] Type 格式化FullName
  3. Qt中嵌入web网页的几种实现方式
  4. 高德地图api 点聚合+海量点+点击事件(根据地区或坐标进行定位)
  5. 网站流量统计名词解释
  6. “ERR_NAME_NOT_RESOLVED“ : 如何在 Google Chrome 浏览器中修复此 DNS 错误
  7. ssh:手机Termux与电脑连接
  8. java审批待办页面跳转设计,OA工作流引擎设计(纯java开发,不需要额外任何插件引擎)...
  9. XAI人工智能可视化管理系统.docx
  10. 汽车美容养护店数字化升级,看音克如何赋能门店经营及增强会员消费