摘要:

1.以动态图形式计算一个简单的加法

2.cpu和gpu计算力比较(包括如何指定cpu和gpu)

3.关于gpu版本的tensorflow安装问题,可以参考另一篇博文:https://www.cnblogs.com/liuhuacai/p/11684666.html

正文:

1.在tensorflow中计算3.+4.

##1.创建输入张量
a = tf.constant(2.)
b = tf.constant(4.)
##2.计算结果
print('a+b=',a+b)

输出:a+b= tf.Tensor(7.0, shape=(), dtype=float32)

总结:20版本在加法实现过程中简单了不少,所见即所得。(1.x的实现过程相对复杂)据说动态的实现也是后端转化成静态图实现的。

2.cpu和gpu计算力比较

说明:通过计算不同大小的矩阵乘法,获得计算时间。

1.指定cpu或gpu通过 with tf.device(‘/cpu:0’):或 with tf.device(‘/gpu:0’):指定,在需要加速的操作前添加即可(此处生成随机     数和矩阵乘法都加速)

2.统计计算时间的函数timeit.timeit需要导入import timeit【timeit.timeit(需计时的函数或语句,计算次数)】

3.计算量的大小与cpu和gpu计算时间的关系,计算量通过改变矩阵大小实现

通过改变矩阵大小,增加矩阵乘法的计算量:计算结果如下

结论:1.在计算量较小的情况下,cpu的计算速度比gpu计算速度快,但是都是微量级别的差异

2.随着计算量的增加,cpu的计算时间逐步增加,而gpu的计算时间相对平缓,在计算量达到一定程度之后,gpu的优势就出来了。

实现过程的完整代码:

import tensorflow as tf
import timeit
import matplotlib.pyplot as plt
'''
以矩阵A[10,n]和矩阵B[n,10]的乘法运算(分别在cpu和gpu上运行)来测试,
'''
def cpu_gpu_compare(n):with tf.device('/cpu:0'):                    ##指定操作用cpu计算cpu_a = tf.random.normal([10,n])        ##生成符合高斯分布的随机数矩阵,通过改变n大小,增减计算量cpu_b = tf.random.normal([n,10])print(cpu_a.device,cpu_b.device)with tf.device('/gpu:0'):gpu_a = tf.random.normal([10,n])gpu_b = tf.random.normal([n,10])print(gpu_a.device,gpu_b.device)def cpu_run():with tf.device('/cpu:0'):               ##矩阵乘法,此操作采用cpu计算c = tf.matmul(cpu_a,cpu_b)return cdef gpu_run():with tf.device('/gpu:0'):              ##矩阵乘法,此操作采用gpu计算c = tf.matmul(gpu_a,gpu_b)return c##第一次计算需要热身,避免将初始化时间计算在内cpu_time = timeit.timeit(cpu_run,number=10)gpu_time = timeit.timeit(gpu_run,number=10)print('warmup:',cpu_time,gpu_time)##正式计算10次,取平均值cpu_time = timeit.timeit(cpu_run,number=10)gpu_time = timeit.timeit(gpu_run,number=10)print('run_time:',cpu_time,gpu_time)return cpu_time,gpu_time
n_list1 = range(1,2000,5)
n_list2 = range(2001,10000,100)
n_list = list(n_list1)+list(n_list2)
time_cpu =[]
time_gpu =[]
for n in n_list:t=cpu_gpu_compare(n)time_cpu.append(t[0])time_gpu.append(t[1])
plt.plot(n_list,time_cpu,color = 'red',label='cpu')
plt.plot(n_list,time_gpu,color='green',linewidth=1.0,linestyle='--',label='gpu')
plt.ylabel('耗时',fontproperties = 'SimHei',fontsize = 20)
plt.xlabel('计算量',fontproperties = 'SimHei',fontsize = 20)
plt.title('cpu和gpu计算力比较',fontproperties = 'SimHei',fontsize = 30)
plt.legend(loc='upper right')
plt.show()

tensorflow cpu和gpu计算速度比较相关推荐

  1. 深度学习模型Intel与ARM部署性能分析,Intel和ARM CPU上CNN计算速度差距分析。

    深度学习模型部署性能分析,Intel和ARM CPU上CNN计算速度差距分析. 一. 模型部署CPU性能分析 1.1 开发阶段CPU-Intel X86架构 1.2 测试阶段CPU-ARM架构 1.3 ...

  2. CPU和GPU计算的优缺点分析

    CPU和GPU都是具有运算能力的芯片,CPU更像"通才"--指令运算(执行)为重+数值运算,GPU更像"专才"--图形类数值计算为核心.在不同类型的运算方面的速 ...

  3. Synchronizing CPU and GPU Work 同步CPU和GPU工作

    Synchronizing CPU and GPU Work 同步CPU和GPU工作 该节对应源代码(经优化可直接运行)请移步下载资源,搜索如上标题即可. 本文介绍了在Metal程序中,同时异步运行的 ...

  4. CPU和GPU的物理结构,性能和应用场景比较

    1. 写了啥 CPU和GPU作为电子计算机的重要部件,在近年来受到工业界的广泛关注,正处于高速迭代的发展期.发展到今日,CPU与GPU同作为计算部件,在应用场景上已经出现明显的区别,与之对应的,二者在 ...

  5. 显卡,CPU,GPU和CUDA的关系与区别

    (1)显卡:显卡全称显示接口卡,又称显示适配器,是计算机最基本配置.最重要的配件之一.就像电脑联网需要网卡,主机里的数据要显示在屏幕上就需要显卡.因此,显卡是电脑进行数模信号转换的设备,承担输出显示图 ...

  6. TensorFlow指定CPU和GPU方法

    TensorFlow指定CPU和GPU方法 TensorFlow 支持 CPU 和 GPU.它也支持分布式计算.可以在一个或多个计算机系统的多个设备上使用 TensorFlow. TensorFlow ...

  7. gpu填充速率 计算_【经典回顾】Nvidia GPU 上的 CNN 计算速度变迁

    笔者从 2012 年初开始接触 GPU 编程,2014 年上半年开始接触 Caffe,可以毫不谦虚地说是"一天天看着 Nvidia GPU 和 Caffe 长大的". Nvidia ...

  8. 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  9. 浅析GPU计算——CPU和GPU的选择

    目前市面上介绍GPU编程的博文很多,其中很多都是照章宣科,让人只能感受到冷冷的技术,而缺乏知识的温度.所以我希望能写出一篇可以体现技术脉络感的文章,让读者可以比较容易理解该技术,并可以感悟到cuda编 ...

最新文章

  1. Handle table中CAS操作与A-B-A Problem解析
  2. 怎么判断几行_日语高考作文该怎么写,和汉语作文一样吗?
  3. 编译32位扩展在64位环境
  4. leetcode刷题总结(持续更新)
  5. jquery 分片上传php,php 大文件分片上传
  6. vue.js中的组件是什么?
  7. (138)FPGA面试题-Verilog HDL中function和task的区别(二)
  8. File /usr/bin/pip, line 11, in module sys.exit(__main__._main()) AttributeError: 'module' ob...
  9. DSP学习笔记(三)——TMS320F28335硬件结构
  10. 【VSCode PlatformIO】 STC单片机开发头文件制作与添加方法
  11. access vba代码全部丢失_Access2016由于无法读取数据库中所含的VBA工程,因此无法打开此数据库。只有先删除VBA工程,然后才能打开数据库...
  12. linux磁盘介绍及磁盘分区
  13. deepin系统 crontab 执行自动任务
  14. 基于STM32设计的健康检测设备(测温心率计步)
  15. AI换脸-简单换脸、人脸对齐、关键点定位与画图
  16. PoE供电六大常见问题大全解析
  17. .Net Core MVC引入static静态变量到.cshtml页面
  18. 八、QOS队列调度与报文丢弃
  19. ansi是什么编码_ANSI的完整形式是什么?
  20. Android进阶(二十八)上下文菜单ContextMenu使用案例

热门文章

  1. (Table)操作:Element-ui 中 Table 表格的设置表头/去除下标线/设置行间距等属性的使用及 slot-scope=“scope“ 的使用案例
  2. html中box标签的作用,CSS3的box-sizing属性的作用及使用
  3. mixins混合应用策略
  4. 人工智能公司IPO吉时已到?看那争相上市的头牌标的们
  5. Java 算法:图的表示
  6. 养生不再是老年人“专利”,年轻人要更好地对自己!
  7. 公交智能化是解决城市公共交通的问题的利器
  8. python打开csv文件乱码_python3写入csv乱码怎么解决
  9. 《数学之美》读书笔记(2)
  10. python绘制折线图数值小数点太长_Python matplotlib画图y轴数值不按大小排列问题