(1)主函数的写法:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
with tf.device("/gpu:0"):
运行代码
(2)会话的配置:
"""
动态申请显存
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
限制gpu的使用率
(1)config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4 #占用40%显存
session = tf.Session(config=config)
(2)gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
config=tf.ConfigProto(gpu_options=gpu_options)
session = tf.Session(config=config)
设置使用那块GPU:
os.environ['CUDA_VISIBLE_DEVICES'] = '0' #使用 GPU 0
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 使用 GPU 0,1
1. 记录设备指派情况 : tf.ConfigProto(log_device_placement=True)
设置tf.ConfigProto()中参数log_device_placement = True ,可以获取到 operations 和 Tensor 被指派到哪个设备(几号CPU或几号GPU)上运行,会在终端打印出各项操作是在哪个设备上运行的。
2. 自动选择运行设备 : tf.ConfigProto(allow_soft_placement=True)
在tf中,通过命令 "with tf.device('/cpu:0'):",允许手动设置操作运行的设备。如果手动设置的设备不存在或者不可用,就会导致tf程序等待或异常,为了防止这种情况,可以设置tf.ConfigProto()中参数allow_soft_placement=True,允许tf自动选择一个存在并且可用的设备来运行操作。
tf提供了两种控制GPU资源使用的方法:
一是让TensorFlow在运行过程中动态申请显存,需要多少就申请多少
二是让Tensorflow在运行过程中限制GPU的使用率。
"""
# 动态申请显存
gpu_options = tf.GPUOptions(allow_growth=True)
"""
配置会话运行参数以及GPU设备
"""
self.sess_config = tf.ConfigProto(
allow_soft_placement=True,
log_device_placement=True,
gpu_options=gpu_options)
(3)把配置传递到会话中去:
with self.sv.managed_session(config=self.sess_config) as sess:
会话中运行代码
-----------------------------------------欢迎交流,留言