深度学习(Google深度学习框架Tensorflow)设置CPU、GPU的设备信息

一、查看GPU、CPU设备信息

在python的IDE中运行:

import os
from tensorflow.python.client import device_lib
# os.environ["TF_CPP_MIN_LOG_LEVEL"] = "0"  输出所有信息
# os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"  屏幕通知信息
# os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"  屏蔽通知信息和警告信息
# os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"  屏蔽通知信息、警告信息、错误信息
if __name__ == "__main__":
    print(device_lib.list_local_devices())

在本机电脑上输出如下信息:

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 4223523817781623947
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 3220691353
locality {
  bus_id: 1
  links {
  }
}
incarnation: 14318725029708764519
physical_device_desc: "device: 0, name: GeForce GTX 745, pci bus id: 0000:01:00.0, compute capability: 5.0"
]

输出以上信息可以说明,Windows下可以用来进行深度学习的设备有/gpu:0和c/pu:0

二、在环境指定的设备上运行程序

运行:

import tensorflow as tf
with tf.device('/gpu:0'):
    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)
    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
    print(sess.run(c))

用with tf.device创建一个设备环境,这个环境下的operation都统一运行在环境指定的设备上
输出:

Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 745, pci bus id: 0000:01:00.0, compute capability: 5.0
MatMul: (MatMul): /job:localhost/replica:0/task:0/device:GPU:0
a: (Const): /job:localhost/replica:0/task:0/device:GPU:0
b: (Const): /job:localhost/replica:0/task:0/device:GPU:0
[[22. 28.]
 [49. 64.]]

无特殊指定程序将在GPU上运行

三.指定整个程序在哪里运行

import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"   #保证程序中的GPU序号是和硬件中的序号是相同的
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"        #CPU
# os.environ["CUDA_VISIBLE_DEVICES"] = "0"        GPU0
# os.environ["CUDA_VISIBLE_DEVICES"] = "n"        GPUn
# os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"      GPU0,1

四.设置定量的GPU使用量

config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存 
session = tf.Session(config=config)

五.windows下查看GPU的使用情况

在cmd环境下,运行

"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"

六.linux下查看GPU的使用情况

设置为每 10s 显示一次显存的情况
在命令行中运行:

watch -n 10 nvidia-smi

七、设置GPU根据需求增长

config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)

八、总结
以上都为使用Google深度学习框架Tensorflow时,GPU和CPU的设备信息配置,同时可以由上可知tensorflow-gpu是否安装后可使用。(注意:如果直接安装tensorflow-gpu而不安装tensorflow模块会导致部分函数找不到;如果先安装tensorflow-gpu,后安装tensorflow模块会导致gpu版本的模块被覆盖。)因此正确的操作是:通过对应版本的CUDA、CuDnn的环境配置后,先安装tensorflow,再安装tensorflow-gpu。

你可能感兴趣的:(深度学习)