在AWS g2上使用Theano与GPU,系统为Ubuntu 14.04
我在尝试让Theano使用我电脑上的GPU时遇到了问题。
当我运行以下命令时:
/usr/local/lib/python2.7/dist-packages/theano/misc$ THEANO_FLAGS=floatX=float32,device=gpu python check_blas.py
我收到了一个警告:
WARNING (theano.sandbox.cuda): CUDA已安装,但设备gpu不可用(错误:无法获取可用GPU的数量:未检测到支持CUDA的设备)
我还检查了NVIDIA驱动是否安装,使用的命令是:
lspci -vnn | grep -i VGA -A 12
结果显示:
Kernel driver in use: nvidia
但是,当我运行:
nvidia-smi
结果是:
NVIDIA: 无法打开设备文件 /dev/nvidiactl(没有这样的文件或目录)。NVIDIA-SMI失败,因为它无法与NVIDIA驱动通信。请确保安装并运行最新的NVIDIA驱动。
而且 /dev/nvidiaactl 也不存在。到底发生了什么事?
更新:/nvidia-smi可以正常工作,结果是:
+------------------------------------------------------+
| NVIDIA-SMI 4.304... Driver Version: 304.116 |
|-------------------------------+----------------------+----------------------+
| GPU Name | Bus-Id Disp. | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 | 0000:00:03.0 N/A | N/A |
| N/A 39C N/A N/A / N/A | 0% 10MB / 4095MB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
在编译了NVIDIA_CUDA-6.0_Samples后,运行deviceQuery我得到了结果:
cudaGetDeviceCount返回35
-> CUDA驱动版本不足以支持CUDA运行时版本
结果 = 失败
5 个回答
我遇到了这个问题:
-> CUDA driver version is insufficient for CUDA runtime version
我的问题和选择的GPU模式有关。换句话说,当你在使用nvidia-settings工具时,选择了集成的Intel GPU,并运行deviceQuery
脚本时,就会出现这个错误:
不过,这个错误有点误导人,实际上只要用nvidia-settings工具重新选择NVIDIA(性能模式),问题就会消失。
这并不是版本问题。
祝好!
附注:这个选择功能是在安装了与Prime相关的内容后才会出现。更多细节可以查看这个链接:https://askubuntu.com/questions/858030/nvidia-prime-in-nvidia-x-server-settings-in-16-04-1
我也遇到了同样的问题,后来我重新安装了Cuda。最后系统提示我需要更新一下环境变量,把/usr/local/cuda7.0/bin加到PATH里,还要把/usr/local/cuda7.0/lib64加到LD_LIBRARY_PATH里。你可以在/etc/environment这个文件里找到PATH(LD_LIBRARY_PATH也要加在同一个文件里)。这样Theano就能找到我的GPU了。其实这都是我自己的小错误...
我花了很多时间想在Ubuntu上让AWS G2工作,但一直失败,遇到了和你一样的错误。目前我在使用这个红帽的AMI顺利运行Theano,并且可以使用GPU。如果你想在红帽上安装Theano,可以按照Theano文档中在CentOS上安装Theano的步骤来操作。
如果你在使用CUDA 7.5,记得按照官方的说明来操作:CUDA 7.5不支持默认的g++版本。你需要安装一个支持的版本,并把它设置为默认。
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
如果你在运行theano的GPU测试代码时遇到错误:
错误信息 (theano.sandbox.cuda):编译cuda_ndarray.cu失败: libcublas.so.7.5: 无法打开共享对象文件:没有这样的文件或目录。警告 (theano.sandbox.cuda):CUDA已安装,但设备GPU不可用(错误:CUDA不可用)
只需要使用 ldconfig
命令来链接CUDA 7.5的共享对象:
sudo ldconfig /usr/local/cuda-7.5/lib64
在Linux系统中,CUDA显卡在使用之前需要先建立一些叫做“设备文件”的东西。
这个内容在官方文档中有说明。
通常,有几种方法可以建立这些设备文件:
- 如果正在运行X服务器。
- 如果以root用户身份启动GPU活动(比如运行nvidia-smi命令,或者任何CUDA应用程序)。
- 通过启动脚本(可以参考上面链接的文档中的示例)。
如果没有采取以上任何步骤,普通用户将无法使用显卡。需要注意的是,这些文件在重启后不会保留,每次启动时都必须通过以上三种方法之一重新建立。如果你使用第二种方法,然后重启电脑,显卡在下次启动时将不可用,直到你再次使用第二种方法。
如果你在设置Linux系统以使用CUDA显卡时遇到问题,建议你完整阅读一下上面链接的Linux入门指南。