C 編譯的Tensorflow進行視訊記憶體限制

2021-09-29 15:18:21 字數 1395 閱讀 6937

tensorflow進行模型時會將視訊記憶體佔滿,導致不能與其他模型並行。

在python中的tensorflow視訊記憶體設定**

config=tf.configproto();

config.gpu_options.per_process_gpu_memory_fraction=0.5

set_session(tf.session(config=config))

在c++中

gpuoption類中有乙個per_process_gpu_memory_fraction物件。其預設值為1。所以會每次將視訊記憶體佔滿,將改值修改即可。

session* session;

configproto configproto;

//新建乙個gpuoption物件

gpuoptions gpuoptions;

//設定視訊記憶體

gpuoptions.set_per_process_gpu_memory_fraction(0.3);

//修改configproto中的gpuoption物件

configproto.set_allocated_gpu_options(&gpuoptions);

//新建乙個sessionoption物件並將configproto物件賦值給它

sessionoptions sessionoptions;

sessionoptions.config=configproto;

status status = newsession(sessionoptions, &session);//建立新會話session

sessionoption類中含有configproto的物件,若不需要對視訊記憶體進行修改,則直接呼叫sessionoptions的預設建構函式即可。

status status = newsession(sessionoptions(), &session);
一開始是想使用configproto.gpuoption()函式來獲得gpuoption物件,並對它進行修改。但是發現該函式返回的是乙個const物件。。。。

後來使用configproto.set_allocated_gpu_options()函式完成。

不加視訊記憶體限制結果如下:

加視訊記憶體限制結果:

因為出來tensorflow以外還有其他模型,所以顯示卡數值不是完全的0.3。但是可以看出明顯限制視訊記憶體了。可以同時載入多個模型了。

使用TensorFlow低階別的API進行程式設計

tensorflow的低階api要使用張量 tensor 圖 graph 會話 session 等來進行程式設計。雖然從一定程度上來看使用低階的api非常的繁重,但是它能夠幫助我們更好的理解tensorflow的,更加靈活的控制訓練的過程。程式的構建分為兩個步驟,第乙個步驟是圖的構建,第二個步驟是會...

tensorflow編譯擴充套件包

我們常常需要在不同的環境下編譯tensorflow的擴充套件包,不同的環境下編譯選項也不一樣,改來改去非常麻煩,這裡提供乙個通用的編譯方式 g std c 11 tf interpolate.cpp o tf interpolate so.so shared fpic i python c impo...

將lua編譯進nginx

export luajit lib usr local lib export luajit inc usr local include luajit 其中luajit表示luajit的安裝目錄 5 接下來是編譯nginx了 其中兩個 add module表示lua的nginx模組和ngx devel...