本文主要是介紹如何實(shí)現(xiàn)指定GPU幻妓,避免過多占用資源巧号。
記錄設(shè)備指派情況
為了獲取你的 operations 和 Tensor 被指派到哪個(gè)設(shè)備上運(yùn)行, 用 log_device_placement 新建一個(gè) session, 并設(shè)置為 True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
代碼中指定GPU
- 方法一
with tf.Session as sess:
with tf.device('/gpu:1'):
...
//若想在多塊GPU上運(yùn)行
with tf.Session as sess:
for d in ['/gpu:1','/gpu:2']:
with tf.device(d):
...
- 方法二
import os
os.environ["CUDA_DEVICES_ORDER"]="PCI_BUS_IS"
os.environ["CUDA_VISIBLE_DEVICES"]=1或"1"
//指定使用第二塊GPU
終端中指定GPU
CUDA_VISIBLE_DEVICES=O,1 python3 main.py //程序只能使用GPU:1
CUDA_VISIBLE_DEVICES="0,1" //同上
CUDA_VISIBLE_DEVICES="" //禁止程序使用GPU
InvalidArgumentError GPU不能使用的問題
allow_soft_placement=True,就是在GPU跑不動(dòng)程序的時(shí)候,自動(dòng)切換到CPU運(yùn)行,這種方式雖然能夠確保程序的正常運(yùn)行,但是卻不能保證GPU出現(xiàn)問題能夠及時(shí)的反饋.
查看GPU的狀態(tài)
nvidia-smi //顯示此刻狀態(tài)
nvidia-smi -l //每隔幾秒動(dòng)態(tài)顯示GPU狀態(tài)(小寫L)
watch -n 10 nvidia-smi //每隔10秒動(dòng)態(tài)顯示GPU狀態(tài)