一、使用gpu加速運算
1.tensorflow程式中可以通過tf.device函式來指定執行的裝置。
cpu名稱為"/cpu:0",即使有多個cpu,所有的cpu都使用/cpu:0作為名稱。
gpu則不同,是"/gpu:n",n可替換。n=0,即是第乙個gpu,以此類推。
2.觀察每個運算所用的裝置:
使用log_device_placement傳入會話當中的配置引數。具體**:
import tensorflow as tf
sess=tf.session(config=tf.configproto(log_devic_placement=true))
sess.run(...)
執行程式後會顯示每乙個操作所用的裝置顯示到螢幕上:
如果沒有明確指定執行裝置,那麼tensorflow會優先選擇gpu。
2.指定運算到指定的裝置
需要tf.device來手工指定。**如下:
得到如下結果:
注意:有些操作是不能在gpu上完成,否則會報錯。
比如:tf.variable()操作只支援實數型資料的引數在gpu上執行,整數型就會報錯。
具體哪些不能在gpu上執行,參考:官方部分文件
為了避免不知道某個操作是否確定在gpu上執行,可指定gpu裝置後,在構建會話時,傳入引數: allow_soft_placement=true,使得不能在gpu裝置上完成的自動移到cpu上完成,具體**:
sess = tf.session(config=tf.configproto(allow_soft_placement=true))
二、tensorflow動態分配gpu和視訊記憶體
tensorflow會預設占用所有gpu以及每個gpu的所有視訊記憶體。
1.如果只想使用部分gpu,2種方法進行設定:
第一種:
執行.py程式時指定:cuda_visible_devices=0, 1 python xx.py
這時候就會只有第一塊、第二塊gpu會使用。
第二種:
在程式中指定:
import os
os.environ["cuda_visible_devices"] = "2"
#只使用第三塊gpu
2.動態分配視訊記憶體
讓tensorflow按需分配視訊記憶體:
config = tf.configproto()
config.gpu_options.allow_growth = true
直接指定視訊記憶體比例:
config.gpu_options.per_process_gpu_memory_fraction = 0.4
#占用gpu40%
再傳入會話當中:
session = tf.session(config=config)
tensorflow中指定GPU及GPU視訊記憶體設定
檢視機器上gpu情況 命令 nvidia smi 功能 顯示機器上gpu的情況 命令 nvidia smi l 功能 定時更新顯示機器上gpu的情況 其中左上側有0 1 2 3的編號,表示gpu的編號,在後面指定gpu時需要使用這個編號。在終端執行程式時指定gpu cuda visible devi...
Tensorflow指定顯示卡GPU執行
有些工作站配備了不止一塊顯示卡,比如4路泰坦。tensorflow會預設使用第0塊gpu,而以tensorflow為backend的keras會預設使用全部gpu資源。有時候有多個人需要跑實驗,如果乙個人占用了全部gpu,其他人就不能跑了。因此需要能夠指定使用特定的gpu。具體地,只需要在主 的開頭...
tensorflow設定gpu及gpu視訊記憶體使用
os.environ cuda visible devices 0 使用 gpu 0 os.environ cuda visible devices 0,1 使用 gpu 0,1 一是讓tensorflow在執行過程中動態申請視訊記憶體,需要多少就申請多少 第二種方式就是限制gpu的使用率。conf...