走进tensorflow第十二步——测试cpu和gpu的速度差距
好久没看这一块了,最近一直瞎折腾,各种捣鼓,到了这个阶段,迷……
打算测一下cpu和gpu的实际差距,虽然我这gpu一般般,只有2G,但还是想看看能不能来点儿惊喜。
测试代码来自如下平台:
https://databricks.com/tensorflow/using-a-gpu
如果嫌麻烦可以直接copy以下代码:
[code]#!/usr/bin/env python # -*- coding:utf-8 -*- import sys import tensorflow as tf from datetime import datetime device_name = sys.argv[1] # Choose device from cmd line. Options: gpu or cpu shape = (int(sys.argv[2]), int(sys.argv[2])) if device_name == "gpu": device_name = "/gpu:0" else: device_name = "/cpu:0" with tf.device(device_name): random_matrix = tf.random_uniform(shape=shape, minval=0, maxval=1) dot_operation = tf.matmul(random_matrix, tf.transpose(random_matrix)) sum_operation = tf.reduce_sum(dot_operation) startTime = datetime.now() with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as session: result = session.run(sum_operation) print(result) # It can be hard to see the results on the terminal with lots of output -- add some newlines to improve readability. print("\n" * 5) print("Shape:", shape, "Device:", device_name) print("Time taken:", datetime.now() - startTime) print("\n" * 5)
原文中导入了numpy模块,根本没用到,于是乎就去掉了,整体代码还是很流畅的,可能有些方法看不懂,但大体知道是什么意思,注意一下sys.argv[],这明显是在调用列表,在这里也就是我们手动设置的参数列表,给大家看一下一个博主写的简介:
也就是说这里的sys.argv[0]就是程序本身,如果输出一下就是该.py文件自身的路径,然后可以设置sys.argv[1]和sys.argv[2],分别是选择cpu/gpu和shape大小(sys.argv[2]*sys.argv[2]);
比如:tf.random_uniform((4, 4), minval=low,maxval=high,dtype=tf.float32)))返回4*4的矩阵,产生于low和high之间,产生的值是均匀分布的。
开始测试:
在cmd中运行程序,第一次编译运行程序花的时间会比较长,需要有额外的花销,所以为了公平,第一次测试不计入比较结果:
首先运行程序,注意两个外部参数 gpu 1500
结果为:
用时将近19秒,第一次会很长,接着再运行一遍:
这次就快了很多,然后对比一下cpu,同样的大小:
结果为:
惊喜出现了。。cpu比gpu还快~~~
为了防止个别情况,我们试一下大小为1000的:
结果为:
和上边的1500大小的差不多,稍微快了一丢丢,然后是gpu:
结果为:
还是老毛病,比相同大小的cpu慢,甚至比1500大小的gpu都慢。。。
猜想造成这一结果的原因:是不是规模太小,gpu不能尽情地施展拳脚,所谓杀鸡焉用牛刀,于是乎,加码,用10000的:
首先用cpu跑10000*10000大小的,结果为:
这次就比上边的慢多了,再看下gpu:
同样是10000*10000,看下结果:
呜呼,终于展现出自己的实力了,这也告诉我们,小规模网络的就不要惊扰gpu了,咱们只干大事儿~~
最后还有个问题,由于我这gpu内存只有2G,这样当规模过大时就会提时错误:ResourceExhaustedError
很明显,这活儿太大了,干不了,已把gpu资源消耗殆尽,这时候就只能退而求其次了,关于这块大家可以去查查,最好的方式就是搞个高逼格显卡,嗯。。。只要有钱~
- APP性能测试(启动速度、内存、CPU、FPS、GPU、耗电量)
- Win10使用Anaconda安装Tensorflow CPU和GPU版并简单测试谷歌Objectdetection API
- 确定自己的TensorFlow是CPU还是GPU的版本
- Tensorflow中使用CPU及GPU的参数设置
- Linux系统下安装TensorFlow(CPU或者GPU版)
- Ubuntu16.04 + NVidia显卡 + Anaconda3 + Tensorflow-GPU + Keras + opencv安装、配置、测试 (无需手动安装CUDA)
- win7-tensorflow查看当前运算器件及无法正常切换CPU/GPU运算器件问题解决方案
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- tensorflow GPU小测试
- TensorFlow基础知识点(一)切换CPU或GPU
- ubuntu 16.04 安装Tensorflow(CPU和GPU)
- 测试CPU速度
- 一些术语的比较(tensorflow和pytorch/cpu和gpu/)
- 【CPU + GPU版】Ubuntu16.04 + caffe + Anaconda2 + OpenCV3.x(附:问题集锦+测试案例)
- tensorflow指定设备GPU/CPU
- 测试CPU速度
- Visual C++编程实现测试CPU的速度
- tensorflow 在指定CPU/GPU上运行方法
- Linux系统下安装TensorFlow(CPU或者GPU版)