TensorFlow学习笔记2-性能分析工具
TensorFlow学习笔记2-性能分析工具
性能分析工具
- 在spyder中运行以下代码:
import tensorflow as tf
from tensorflow.python.client import timeline
#构造计算图
x = tf.random_normal([1000, 1000])
y = tf.random_normal([1000, 1000])
res = tf.matmul(x, y)
#运行计算图, 同时进行跟踪
with tf.Session() as sess:
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
sess.run(res, options=run_options, run_metadata=run_metadata)
#创建Timeline对象,并将其写入到一个json文件
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline.json', 'w') as f:
f.write(ctf)
使用with tf.Session() as sess
进行处理,运算完成后会自动关闭session,不需要再显示地sess.close()
上述代码将session的运行情况写入到timeline.json
文件。
注意:如果上述代码在spyder中报错,报错内容为 Couldn't open CUDA library cupti64_92.dll
解决办法: 用everything搜索cupti64_92.dll
,并把它复制到你的CUDA环境变量对应的目录:如\CUDA\v9.2\bin\cupti64_92.dll
- 打开你的源文件路径,可以看到已经有了
timeline.json
文件。在chrome浏览器中打开chrome://tracing/
,然后load
上述timeline.json
文件,可以看到时序图。
- 进行分析:
左下角的Args中:
- name:输出tensor
- op:运算
- input0:输入tensor
以pid 3为例,是GPU:0的进程:点击NoOp,这意味着没有Op操作;然后是Const操作,它没有输入,输出是random_normal/shape
;然后RandomStandardNormal操作,它输入是random_normal/shape
,输出是random_normal/RandomStandardNormal
;紧接着仍然是RandomStandardNormal操作,它输入也是random_normal/shape
,输出是random_normal_1/RandomStandardNormal
;最后是MatMul操作,输入是random_normal/RandomStandardNormal
与random_normal_1/RandomStandardNormal
,输出是MatMul
。
- 指派设备
上述代码是默认指派到gpu0进行运算的,你也可以用with tf.device('/cpu:0')
将运算指派到你想要的设备:例如,你可以将上述代码更改为:
import tensorflow as tf
from tensorflow.python.client import timeline
#构造计算图
with tf.device('/cpu:0'):
x = tf.random_normal([1000, 1000])
y = tf.random_normal([1000, 1000])
res = tf.matmul(x, y)
#运行计算图, 同时进行跟踪
with tf.Session() as sess:
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
sess.run(res, options=run_options, run_metadata=run_metadata)
#创建Timeline对象,并将其写入到一个json文件
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline.json', 'w') as f:
f.write(ctf)
在浏览器中打开timeline.json
后,可以看到
- 常量的生成,随机矩阵的创建是在CPU进行运算;
- 将两个随机矩阵内存搬运到GPU(MEMCPYHtoD);
- 在GPU上进行MatMul运算;
- 将GPU的运算结果搬回CPU(MEMCPYDtoH)。
警告
当你每次调用 sess.run
时,一定要确保好,不要设置 FULL_TRACE
,否则会降低训练的速度。可以每100-1k 次训练设置1次FULL_TRACE
.
TensorFlow学习笔记2-性能分析工具的更多相关文章
- 「功能笔记」性能分析工具gprof使用笔记
根据网上信息整理所成. 功能与优劣 gprof实际上只是一个用于读取profile结果文件的工具.gprof采用混合方法来收集程序的统计信息,它使用检测方法,在编译过程中在函数入口处插入计数器用于收集 ...
- Linux 性能分析工具汇总合集
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...
- TensorFlow学习笔记0-安装TensorFlow环境
TensorFlow学习笔记0-安装TensorFlow环境 作者: YunYuan 转载请注明来源,谢谢! 写在前面 系统: Windows Enterprise 10 x64 CPU:Intel( ...
- 性能分析工具-PerfView
Roslyn的PM(程序经理) Bill Chiles,Roslyn使用纯托管代码开发,但性能超过之前使用C++编写的原生实现,这有什么秘诀呢?他最近写了一篇文章叫做<Essential Per ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
- 系统级性能分析工具perf的介绍与使用[转]
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
- [转]Linux性能分析工具汇总合集
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...
- 超全整理!Linux性能分析工具汇总合集
转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
随机推荐
- 旧接口注册LED字符驱动设备(动态映射)
#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module ...
- make: *** 没有指明目标并且找不到 makefile
make: *** 没有指明目标并且找不到 makefile. 停止. make: *** 没有规则可以创建目标“install”. 停止. 不是没有makefile文件,而是你没有安装gcc编译 ...
- Appium+Python之批量执行测试用例
思考:当存在多个脚本,每个脚本中有多条测试用例时,我们该如何批量执行呢?分析:首先创建2个测试用例脚本(.py文件),每个脚本有2条测试用例,然后批量执行全部测试用例 #Test_01.py # co ...
- Jquery中$(function(){})
1. 在哪书写js文件 如果我们要执行一段js代码,我们该怎么办呢? 1.我们可以写一个js文件,在js文件里写执行函数,然后再<script src='...'> ... </sc ...
- css炫酷动画收藏
1.按钮.hover.input动画(cssfx) https://cssfx.dev/ 2.svg 矢量定制icon(ikonate) https://www.ikonate.com/#conten ...
- Tomcat支持SSL加密网站
配置Tomcat,以支持SSL对网站加密,关键性配置如下: 思路:在tomcat服务器web1上做相应配置->客户端测试. 1.创建加密用的私钥和证书文件 [root@web1 ~]# keyt ...
- 02tensorflow非线性回归以及分类的简单实用,softmax介绍
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 使用numpy生成200个随机点 x_data ...
- python如何查看内存占用空间
我们如何查看变量占用了多少内存空间呢 首先我们引用sys模块,在使用getsizeof()方法 import sys L = [x for x in range(10000)] print(sys.g ...
- 如何对Web服务器进行飓风级防御
万一你的网站被DDOS飓风式攻击,你会怎么办?笔者以经验告诉你,这里的每一层都起着保护网站的作用.如果您宁愿拥有如何在单台服务器上维持大量流量的版本,则可以: 专用硬件服务器,无共享主机 千兆上行链路 ...
- Python配置模块:configparser参数含义
https://blog.csdn.net/CoderPai/article/details/80420698