在AWS g2上使用Theano与GPU,系统为Ubuntu 14.04

4 投票
5 回答
12542 浏览
提问于 2025-04-18 12:43

我在尝试让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 个回答

0

我遇到了这个问题:

-> 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

0

我也遇到了同样的问题,后来我重新安装了Cuda。最后系统提示我需要更新一下环境变量,把/usr/local/cuda7.0/bin加到PATH里,还要把/usr/local/cuda7.0/lib64加到LD_LIBRARY_PATH里。你可以在/etc/environment这个文件里找到PATH(LD_LIBRARY_PATH也要加在同一个文件里)。这样Theano就能找到我的GPU了。其实这都是我自己的小错误...

0

我花了很多时间想在Ubuntu上让AWS G2工作,但一直失败,遇到了和你一样的错误。目前我在使用这个红帽的AMI顺利运行Theano,并且可以使用GPU。如果你想在红帽上安装Theano,可以按照Theano文档中在CentOS上安装Theano的步骤来操作。

3

如果你在使用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
4

在Linux系统中,CUDA显卡在使用之前需要先建立一些叫做“设备文件”的东西。

这个内容在官方文档中有说明。

通常,有几种方法可以建立这些设备文件:

  1. 如果正在运行X服务器。
  2. 如果以root用户身份启动GPU活动(比如运行nvidia-smi命令,或者任何CUDA应用程序)。
  3. 通过启动脚本(可以参考上面链接的文档中的示例)。

如果没有采取以上任何步骤,普通用户将无法使用显卡。需要注意的是,这些文件在重启后不会保留,每次启动时都必须通过以上三种方法之一重新建立。如果你使用第二种方法,然后重启电脑,显卡在下次启动时将不可用,直到你再次使用第二种方法。

如果你在设置Linux系统以使用CUDA显卡时遇到问题,建议你完整阅读一下上面链接的Linux入门指南。

撰写回答