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,重啟程式就沒問題了。

沒有留言:

張貼留言

<GOOGLE地圖時間軸資料匯入世界迷霧JSON_to_gpx>

可能有些人有用世界迷霧這個APP 來記錄自己到過世界那些地方 之前比較常用的 大概是把飛機的搭乘軌跡匯入 那有沒有可能把GOOGLE地圖過往的時間軸也匯入呢? 我研究了一下是可行的 不過GOOGLE地圖時間軸的資料匯出會是json檔 世界迷霧只能用kml跟gpx匯入 所以會需要一...