CUDA issue:cudaGetDeviceCount()错误

问题

cuda编程cudaGetDeviceCount()出问题。检测:运行cuda sample——deviceQuery,Fail,原因:no CUDA-capable device is detected。但是之前编译caffe(含cuda和cudnn),以及nvcc 编译自己编写的.cu程序都OK。(怪不得caffe这次安装了cudnn,运行mnist,还很慢)

常用命令

nvcc -V:可以查看cuda版本 
prime-select query:可以查看正在运行的显卡 
prime-selecr intel/nvidia:可以切换工作的显卡 
现在上面都运行正常的。

猜测推理

既然显卡运行正常,那么Nvidia显卡驱动应该是没有问题的。所以重新安装cuda。 
先整理现在的软件和cuda有依赖的: 
caffe-master,caffe-bsd;cuda安装在/usr/local/cuda-7.0(默认),有一个cuda的文件夹软链接。此外在/etc/ld.so.conf.d/中有个cuda.conf的文件含有/usr/local/cuda-7.0/lib64;在cuda-7.0中还有cudnn的include和lib文件。

猜测:cuda重新安装后,安装在原来的位置,那么include,库和bin都能够被需要cuda的文件找到,所以caffe-master,caffe-bsd应该可以不用重新编译。此外,cudaSamples也应该不用重新编译。

然而,运行nvidia-smi,出现NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.的错误,所以Nvidia驱动可能会出错。暂且先认为它工作正常。先重新安装cuda。

重装cuda7.0

卸载cuda:.run 文件安装的,在cuda-7.0/bin下有uninstall_cuda_7.0.pl,直接./运行 
卸载后查看/proc/driver/nvidia,没有这个文件。

按照之前安装cuda的教程(.run)重新安装了cuda。

检验

  1. cat /proc/driver/nvidia/version 
    NVRM version: NVIDIA UNIX x86_64 Kernel Module 352.63
  2. nvcc -V 
    nvcc: NVIDIA (R) Cuda compiler driver 
    Copyright (c) 2005-2015 NVIDIA Corporation 
    Built on Mon_Feb_16_22:59:02_CST_2015 
    Cuda compilation tools, release 7.0, V7.0.27
  3. nvidia-smi 
    | NVIDIA-SMI 352.63 Driver Version: 352.63 | 
    | GPU Name Persistence-M| Memory-Usage | GPU-Util Compute M. | 
    | 0 GeForce GT 740M Off | 120MiB / 2047MiB | N/A Default | 
    | Processes: GPU Memory | 
    | GPU:0|
  4. check /dev/nvidia* 
    存在nvidia0
  5. 测试./deviceQuery,./bandwidthTest 
    (这之前先要ldconfig),运行cudaSamples(上次编译的)./deviceQuery,PASS;./bandwidthTest,PASS
  6. prime-select query 
    查看:nvidia,切换到intel。./deviceQuery和./bandwidthTest仍成功。
  7. 运行caffe_mnist 
    (cudnn)运行成功,但是速度并没有很快。 
    (说明之前的猜测是对的,caffe-master,cudaSamples都不用重新编译。cuda只要头文件,库,bin即可)

处理依赖:

  1. sudo ldconfig——在/etc/ld.so.conf.d/中有个cuda.conf的文件含有/usr/local/cuda-7.0/lib64
  2. 重新解压cudnn到cuda的文件中,ldconfig

原因

cuda可能是更新,或者期间安装卸载其他软件软件的影响吧。具体原因未知。

posted @ 2017-07-02 10:00  Hanson666  阅读(5581)  评论(0编辑  收藏  举报