在 AWS g2 上的 Ubuntu 14.04 上使用带 GPU 的 Theano

Posted

技术标签:

【中文标题】在 AWS g2 上的 Ubuntu 14.04 上使用带 GPU 的 Theano【英文标题】:Using Theano with GPU on Ubuntu 14.04 on AWS g2 【发布时间】:2014-08-31 03:36:33 【问题描述】:

我无法让 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

结果:正在使用的内核驱动程序: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 运行时版本不足 结果 = 失败

【问题讨论】:

您是否以 root 用户身份运行 nvidia-smi?如果没有,请尝试以 root 身份运行。如果您以 root 身份运行它,则说明您的驱动程序未正确安装。尝试重新安装驱动程序。顺便说一句,Ubuntu 14.04 不支持 6.0 以上的任何 CUDA 版本 谢谢!我没有以root身份运行它。有效。我会尝试使用旧版本的 ubuntu 您是如何安装 Nvidia 驱动程序的? 【参考方案1】:

在正确建立某些“设备文件”之前,Linux 系统中的 CUDA GPU 不可用。

the documentation 中有关于此效果的注释。

一般有几种方法可以建立这些设备文件:

    如果 X 服务器正在运行。 如果 GPU 活动以 root 用户身份启动(例如运行 nvidia-smi 或任何 CUDA 应用程序。) 通过启动脚本(有关示例,请参阅上面链接的文档)。

如果不采取这些步骤,GPU 将无法为非 root 用户使用。请注意,文件不会在重新引导后保留,必须在每个引导周期通过上述 3 种方法之一重新建立。如果您使用方法 2 并重新启动,则在您再次使用方法 2 之前,GPU 将不可用。

如果您在设置 linux 系统以使用 CUDA GPU 时遇到问题,我建议您完整阅读 linux 入门指南(如上链接)。

【讨论】:

所以我用 ubuntu13.10 创建了一个新的 AWS g2 实例并再次尝试,以 root 身份运行 nvidia-smi,并编译了示例,当我运行 deviceQuery 时出现错误:cudaGetDeviceCount 返回 35 - > CUDA 驱动程序版本不足 CUDA 运行时版本 Result = FAIL 当然这是一个完全不同的问题。 SO Q+A 不是聊天会话。你为什么不阅读我链接的文档?它指示了设置正确的 CUDA 安装和验证过程中每个步骤的特定命令所必需的内容。对于初学者,以 root 身份运行 nvidia-smi -a 会报告什么驱动程序版本,以及安装的 CUDA 工具包是什么版本? 感谢您提供的文档,实际上我之前已经找到它并尝试按照这些步骤操作,但某些预安装步骤对我不起作用。驱动版本:304.116,CUDA:6.0 CUDA 6 不适用于 304.116。您需要安装 331.62 或更高版本的驱动程序。如果您在该平台上实际安装 CUDA 工具包(例如,使用文档中描述的运行文件安装方法),而不是尝试从 AMI 或存储库中引入它,您将获得适当的驱动程序。最好的办法是在该平台上为 GPU 安装最新的驱动程序,我认为是 GRID K520,类似于this one。如果您使用的不是 GRID K520 或 64 位 linux,请选择合适的驱动程序。 所以我尝试从网站和直接从 CUDA 工具包安装驱动程序 340.42,但它们都因内核错误而失败。我让它工作的唯一方法是通过这里的步骤:binarytides.com/install-nvidia-drivers-ubuntu-14-04 但 nvidia-current 是 304,当我尝试 331、334 和 340 时,它拒绝与我的 GRID K520 配对【参考方案2】:

如果您使用的是 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

【讨论】:

OT:非常感谢,这个 ldconfig 技巧 - 在 2 小时无用调试后帮助我解决了问题【参考方案3】:

我已经浪费了很多时间来尝试让 AWS G2 在 ubuntu 上运行,但是因为像你一样得到确切的错误而失败了。目前,我正在使用this redhat AMI 顺利运行带有 gpu 的 Theano。要在 Redhat 上安装 Theano,请遵循 Theano 文档中在 CentOS 中安装 Theano 的过程。

【讨论】:

【参考方案4】:

遇到同样的问题并重新安装了 Cuda,最后它说我必须更新 PATH 以包含 /usr/local/cuda7.0/bin 和 LD_LIBRARY_PATH 以包含 /usr/local/cuda7.0/lib64。可以在 /etc/environment 中找到 PATH(在同一文件中添加 LD_LIBRARY_PATH)。然后theano找到了gpu。我的基本错误...

【讨论】:

【参考方案5】:

我明白了

-> CUDA driver version is insufficient for CUDA runtime version

我的问题与所选的 GPU 模式有关。 换句话说,问题可能与选择的 GPU 模式(性能/省电模式)有关,当您选择(使用 nvidia-settings 实用程序,在“PRIME Profiles”配置中)集成 Intel GPU 并执行 @987654323 @脚本...你得到这个错误:

但这个错误具有误导性, 通过使用 nvidia-settings 实用程序选择返回 NVIDIA(性能模式),问题就消失了。

这不是版本问题

问候

P.s: 安装 Prime-related-stuff 时可以选择。更多详情:https://askubuntu.com/questions/858030/nvidia-prime-in-nvidia-x-server-settings-in-16-04-1

【讨论】:

以上是关于在 AWS g2 上的 Ubuntu 14.04 上使用带 GPU 的 Theano的主要内容,如果未能解决你的问题,请参考以下文章

Mono 3.0.1 --> 为 Ubuntu 14.04 LTS (AWS Linux AMI) 编译 xsp 时出错

g2o的安装

AWS ec2的ubuntu14.04上安装git服务

如何在 Ubuntu 14.04 上的 QT creator 中使用 Boost 库

Java/Ubuntu - 在 Windows 上的主要工作之外打印,但在 Ubuntu 14.04 上不执行任何操作

Ubuntu 14.04 上的 QT 应用程序