安装了tensorflow GPU(在一个可怜的NVIDIA GeForce 950上运行),我想比较性能和CPU。
我正在运行tensorFlow MNIST教程代码,并注意到速度的急剧增加 - 估计无论如何(我在2天前在笔记本电脑i7上运行CPU版本,批量大小为100,这在桌面GPU上,批量大小为10) - 当我切换时CPU和GPU之间...但我只注意到当我将GPU上的批量大小从100降低到10时速度增加...
现在我缺乏客观的衡量标准。
有没有办法在CPU和GPU张量流之间切换?
答案 0 :(得分:26)
使GPU不可见
export CUDA_VISIBLE_DEVICES=""
恢复正常
unset CUDA_VISIBLE_DEVICES
答案 1 :(得分:13)
尝试将tf.device设置为cpu:0
with tf.Session() as sess:
with tf.device("/cpu:0"):
答案 2 :(得分:2)
另一种选择是在两个虚拟环境中安装cpu版本和tensorflow的gpu版本,此处列出了有关如何在虚拟环境中安装tensorflow的详细说明https://www.tensorflow.org/get_started/os_setup;通过这种方式,您可以在两个终端窗口中运行相同的代码,一个使用CPU,另一个使用GPU。
答案 3 :(得分:1)
已经过去了很长时间。 Tensorflow的最新版本(至少从2.0开始)不需要安装同时具有 和 gpu的两个版本,因此您可以启动两个单独的jupyter-notebook
实例。遵循@Yaroslav的建议:
$ CUDA_VISIBLE_DEVICES="" jupyter-notebook &
$ jupyter-notebook &
然后,您将在浏览器中分别打开两个独立的jupyter客户端,分别为http://localhost:8888/
和http://localhost:8889/
,分别具有和不具有GPU支持,您可以在其中运行相同的.ipynb笔记本并测量性能差异
答案 4 :(得分:0)
# Check if the server/ instance is having GPU/ CPU from python code
import sys
import tensorflow as tf
# device_lib.list_local_devices() ## this command list all the processing device GPU and CPU
device_name = [x.name for x in device_lib.list_local_devices() if x.device_type == 'GPU']
if device_name[0] == "/device:GPU:0":
device_name = "/gpu:0"
#print('GPU')
else:
#print('CPU')
device_name = "/cpu:0"
with tf.device(device_name):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
with tf.Session() as sess:
print (sess.run(c))
答案 5 :(得分:0)
要关闭GPU,只需将其添加到脚本顶部即可。
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
(要再次使用GPU时请注释一下)