【caffe】 Check failed: error == cudaSuccess (30 vs. 0) unknown error

解决办法 : 加 sudo

用caffe,不报错,那一定要的时假caffe.
ubuntu16.04 ,写了一个.py文件调用resnet.caffemodel 来对图片进行分类.
但是在运行时出错,错误是

...略
layer {
  name: "prob"
  type: "Softmax"
  bottom: "fc2"
  top: "prob"
}
I1122 13:37:10.886868 32369 layer_factory.hpp:77] Creating layer input
I1122 13:37:10.886879 32369 net.cpp:84] Creating Layer input
I1122 13:37:10.886884 32369 net.cpp:380] input -> data
F1122 13:37:10.906644 32369 syncedmem.hpp:22] Check failed: error == cudaSuccess (30 vs. 0)  unknown error
*** Check failure stack trace: ***
Aborted (core dumped)

咋一看,cuda,难道和cuda有关?各种找,发现很类似错误提示,但是都无法解决问题,例如又如下类似错误
error == cudaSuccess (2 vs. 0);
error == cudaSuccess (4 vs. 0);
error == cudaSuccess (35 vs. 0)等
还有极其相似的错误:
syncedmem.hpp:18] Check failed: error == cudaSuccess (30 vs. 0) unknown error,这个解决办法在:
http://blog.youkuaiyun.com/u010167269/article/details/50703923

最后 解决办法 是 sudo python xxx.py

感谢:http://blog.youkuaiyun.com/qq_26569761/article/details/51737154 

在使用 Caffe 进行深度学习模型训练时,可能会遇到与 cuDNN 相关的错误,例如: ``` F0302 13:43:02.431520 29995 cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR ``` 或 ``` Check failed: status == CUDNN_STATUS_SUCCESS (1 vs. 0) CUDNN_STATUS_NOT_INITIALIZED ``` 这些错误通常表明在调用 cuDNN 库时发生了初始化失败或内部错误。以下是可能导致这些错误的原因及相应的解决方法。 ### 原因分析 1. **cuDNN 初始化失败** cuDNN 在使用前需要正确初始化,若在调用 cuDNN 函数时未完成初始化,会返回 `CUDNN_STATUS_NOT_INITIALIZED` 错误。这可能是由于代码中未正确调用 `cudnnCreate()` 或相关上下文未正确设置导致的。 2. **CUDA 和 cuDNN 版本不兼容** 如果使用的 CUDA 工具包版本与 cuDNN 不兼容,或者 Caffe 编译时使用的 CUDA/cuDNN 版本与运行时的版本不一致,也可能导致此类错误。 3. **GPU 计算能力不支持** 若 GPU 的计算能力(Compute Capability)较低(如低于 3.0),而 Caffe 的编译配置中启用了高版本的 CUDA 架构支持,可能导致 cuDNN 初始化失败。例如,对于 Compute Capability 为 2.1 的设备,若未正确屏蔽不支持的架构选项,将导致 cuDNN 无法正常工作[^3]。 4. **权限问题** 在某些系统环境下(如 Linux),若未以管理员权限运行训练脚本,可能无法正确初始化 GPU 资源,从而导致 cuDNN 初始化失败。此时应使用 `sudo` 执行训练脚本[^1]。 ### 解决方法 1. **检查并设置 GPU 计算能力** 修改 Caffe 的 `Makefile.config` 文件,确保 `CUDA_ARCH` 设置与 GPU 的 Compute Capability 一致。例如,对于 Compute Capability 为 2.1 的设备,应修改为: ```makefile CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 ``` 并屏蔽掉更高版本的架构支持[^3]。 2. **禁用 cuDNN(如设备不支持)** 对于 Compute Capability 较低的设备(如 2.1),应将 `CommonSettings.props` 中的 `use_cudnn` 设置为 `false`,以避免尝试使用不支持的 cuDNN 功能。 3. **验证 CUDA 和 cuDNN 安装** 确保系统中安装的 CUDA 和 cuDNN 版本与 Caffe 编译时使用的版本一致,并可通过运行 `nvidia-smi` 和 `nvcc --version` 检查驱动和 CUDA 工具包版本。 4. **使用管理员权限运行训练脚本** 在 Linux 系统中,若出现 `Cannot create Cublas handle` 错误,应尝试使用 `sudo` 执行训练脚本: ```bash sudo ./examples/mnist/train_lenet.sh ``` 该方法可确保 GPU 资源被正确访问和初始化[^1]。 5. **修改 Caffe 网络定义** 在某些情况下,网络定义中的卷积层参数可能与 cuDNN 不兼容。例如,将 `engine` 设置为 `CAFFE` 而非默认的 `CUDNN` 可避免部分初始化问题: ```protobuf layer { name: "Conv_0" type: "Convolution" bottom: "input" top: "470" convolution_param { num_output: 64 bias_term: true group: 1 pad_h: 1 pad_w: 1 kernel_h: 3 kernel_w: 3 stride_h: 2 stride_w: 2 dilation: 1 engine: CAFFE } } ``` 此配置可绕过 cuDNN 引擎,使用 Caffe 自带的实现[^2]。 --- ###
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值