2019年4月16日 星期二

"程式教學"keras 或tensorflow 調用GPU運算出現錯誤訊息:Blas GEMM launch failed解決方法

最近在搞深度學習的模型
好不容易把GPU版本的keras 跟tensorflow 都裝好了
要計算的時候卻發現無法使用
出現以下的錯誤訊息
Blas GEMM launch failed

經過查詢才知道,GPU版的tensorflow或者keras在模型訓練時遇到Blas GEMM launch failed錯誤,(keras 一般將tensorflow作為backend,如果安裝了GPU版本的tensorflow,那麼在使用keras時會優先使用GPU)

這是調用GPU時,記憶體分配遇到了問題,解決方式是在模型訓練之前為tensorflow或者keras分配記憶體空間

而keras就在引入keras時進行參數設置:
程式碼如下

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allocator_type = 'BFC' #A "Best-fit with coalescing" algorithm, simplified from a version of dlmalloc.
config.gpu_options.per_process_gpu_memory_fraction = 0.8
config.gpu_options.allow_growth =True

set_session(tf.Session(config=config)) 

======================================================================
config.gpu_options.per_process_gpu_memory_fraction = 0.8
#設定每個GPU要拿出多少容量給程式使用,0.8代表80%
allow_growth option,程式開始執行時分配少量的GPU容量,而後按需求慢慢的增加



如果使用jupyter notebook,做完上述設置後可能出現GPU sync failed,重啟程式就沒問題了。

沒有留言:

張貼留言

經濟日報數位訂閱懶人包

  去年寫過一篇介紹文,經濟日報推出了數位訂閱產品,如果你是價值投資者,或是對產業研究及經濟數據有興趣的朋友,包含深耕國內外財經深度內容、圖像式產業資料庫、早安經濟日報聽新聞等等。   目前有「彭博新聞獨家聯名、七大外媒授權合作、專家解析深度專欄」三大內容,豐富你的關鍵投...