Caffe:训练后GPU CUDA错误:检查失败:error == cudaSuccess (30 vs. 0) unknown error

Caffe: GPU CUDA error after training: Check failed: error == cudaSuccess (30 vs. 0) unknown error

有时在训练后或当我按 CTRL + C 手动停止训练时,我会收到此 cuda 错误:

检查失败:error == cudaSuccess (30 vs. 0) 未知错误

不过,这只是最近才开始发生的。有没有人以前经历过这种情况,或者您知道如何解决这个问题或问题是什么?

完整日志:

I1027 09:29:37.779079 11959 caffe.cpp:217] Using GPUs 0
I1027 09:29:37.780676 11959 caffe.cpp:222] GPU 0: �|���
F1027 09:29:37.780697 11959 common.cpp:151] Check failed: error == cudaSuccess (30 vs. 0)  unknown error
*** Check failure stack trace: ***
    @     0x7f6cc4f465cd  google::LogMessage::Fail()
    @     0x7f6cc4f48433  google::LogMessage::SendToLog()
    @     0x7f6cc4f4615b  google::LogMessage::Flush()
    @     0x7f6cc4f48e1e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f6cc5558032  caffe::Caffe::SetDevice()
    @           0x40b3f8  train()
    @           0x407590  main
    @     0x7f6cc3eb7830  __libc_start_main
    @           0x407db9  _start
    @              (nil)  (unknown)

尝试做 make all --> make test --> make runtest。它应该工作

使用nvidia-smi 命令查看GPUCPU 上有哪些程序是运行。如果你看到 caffe 的任何不需要的实例在按下 ctrl+c 后仍然是 运行,你应该杀死那些具有进程 ID 的实例。如下所示:

+------------------------------------------------------+                       
| NVIDIA-SMI 352.63     Driver Version: 352.63         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 0000:01:00.0      On |                  N/A |
| 58%   83C    P2   188W / 260W |   1164MiB /  6142MiB |     96%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 980 Ti  Off  | 0000:02:00.0     Off |                  N/A |
| 53%   73C    P2   127W / 260W |    585MiB /  6143MiB |     35%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1101    C   ...-xx/build/tools/caffe   788MiB |
|    0      1570    G   /usr/bin/X                                     235MiB |
|    0      1594    C   /usr/bin/python                                102MiB |
|    0      2387    G   compiz                                          10MiB |
|    0      3984    G   /usr/local/MATLAB/R2016a/bin/glnxa64/MATLAB      2MiB |
|    1     25056    C   /usr/bin/caffe                                 563MiB |
+-----------------------------------------------------------------------------+

你应该用这个命令杀死sudo kill -9 1101

在 运行 Make all 之后,注意到一些关于 libcudnn 库的错误,我将它们复制到 /usr/lib/x86_64-linux-gnu 和 /usr/local/cuda-8.0/lib64 中。只留下 /usr/lib/x86_64-linux-gnu 中的那些并重新启动笔记本电脑后一切正常。

如果您的程序无法创建或打开 /dev/nvidia-uvm 设备文件,则可能会显示 CUDA 运行时错误 (30)。这通常通过安装软件包 nvidia-modprobe 来解决:

sudo apt-get install nvidia-modprobe

尝试reinstall/build当前内核的nvidia驱动程序

sudo apt-get install --reinstall nvidia-375

sudo apt-get install nvidia-modprobe

如果您的程序无法创建或打开 /dev/nvidia-uvm 设备文件,可能会显示 CUDA 运行时错误 (30)。这通常通过安装软件包 nvidia-modprobe 来解决:

(Source)