Internal Error: Blas GEMM launch failed 问题

      Tensorflow程序运行中出现"Interal Error:Blas GEMM launch failed.",此错误主要是由于程序运行时GPU的空间不足而引起的。故一般出现此错误的时候,会发现程序提示的GPU freeMemory 很少,如下图所示。

Internal Error: Blas GEMM launch failed 问题_第1张图片

       出现显存不足的主要问题是Tensorflow默认申请可使用的全部显存,当tensorflow程序运行会话却没有关闭会话释放资源的时候,就会出现此错误,尤其是使用Keras、以及 jupyter的时候。可使用watch命令查看NVIDIA显卡的显存使用情况。如下图所示tensorflow的程序几乎使用了全部内存,故当新程序运行时就会显示Internal Error。

watch nvidia-smi

                 Internal Error: Blas GEMM launch failed 问题_第2张图片

     此问题的解决方法如下:

     (1)通过强制结束进程(或者重启电脑),进行显存的释放,对于Keras、jupyter等运行时显存被耗尽的情况。kill -9可以无条件终止程序。

kill -9 3627

     (2)通过设定config为使用的显存按需自动增长,避免显存被耗尽,可进行有效的预防。

gpu_no = '0' # or '1'
os.environ["CUDA_VISIBLE_DEVICES"] = gpu_no

# 定义TensorFlow配置
config = tf.ConfigProto()

# 配置GPU内存分配方式,按需增长,很关键
config.gpu_options.allow_growth = True

# 配置可使用的显存比例
config.gpu_options.per_process_gpu_memory_fraction = 0.1

# 在创建session的时候把config作为参数传进去
sess = tf.InteractiveSession(config = config)

参考链接:https://www.cnblogs.com/zhsuiy/p/8030651.html

 

你可能感兴趣的:(深度学习)