让 Theano 使用 GPU

Posted

技术标签:

【中文标题】让 Theano 使用 GPU【英文标题】:Getting Theano to use the GPU 【发布时间】:2013-08-12 11:22:56 【问题描述】:

我在设置 Theano 以使用我的显卡时遇到了很多麻烦 - 我希望你们能帮帮我。

我以前使用过 CUDA,它已正确安装,这是运行 Nvidia Nsight 所必需的。但是,我现在想将它与 PyDev 一起使用,并且在 http://deeplearning.net/software/theano/install.html#gpu-linux 上的教程的“使用 GPU”部分之后遇到了几个问题@

第一个很基础,就是如何设置环境变量。它说我应该'定义一个 $CUDA_ROOT 环境变量'。有几个消息来源说要在我的主目录中创建一个新的“.pam_environment”文件。我已经这样做并写了以下内容:

CUDA_ROOT = /usr/local/cuda-5.5/bin
LD_LIBRARY_PATH = /usr/local/cuda-5.5/lib64/lib

我不确定这是否正是它必须编写的方式 - 如果这是一个基本问题,我们深表歉意。如果我能确认这确实是编写它的正确位置,那将很有帮助。

第二个问题在教程的以下部分。它说“更改设备选项以命名您计算机中的 GPU 设备”。显然,这与 THEANO_FLAGS 和 .theanorc 有关,但我无法找到它们是什么:它们是文件吗?如果是这样,我在哪里可以找到它们?该教程似乎假设了一些我没有的知识!

感谢您花时间阅读本文:非常感谢任何和所有答案 - 我现在完全陷入困境!

【问题讨论】:

【参考方案1】:

THEANO_FLAGS 是环境变量,.theanorc 是配置文件。您可以使用这两种机制来配置 Theano。这被描述为here。

我从未听说过 .pam_environment 文件。此外,您不应该只覆盖 LD_LIBRARY_PATH 的值,而是像这样附加/前置它:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.5/lib64/lib

对于Theano,如果你定义了CUDA_ROOT,你不需要修改LD_LIBRARY_PATH,所以我只删除最后一行。

通常,如果你的 shell 是 bash,人们会像这样在 .bashrc 文件中定义环境变量 CUDA_ROOT

export CUDA_ROOT=/usr/local/cuda-5.5/bin

只有在您注销并重新登录时才会使用对 .bashrc 的更改。

【讨论】:

您无需注销即可进行更改。只需运行 source ~/.bashrc【参考方案2】:

在 Linux/OSX 上:

编辑或创建文件~/.theanorc。该文件应包含:

[global]
floatX = float32
device = gpu0

[nvcc]
fastmath = True

[cuda]
root=/usr/local/cuda-5.5/  
# On a mac, this will probably be /Developer/NVIDIA/CUDA-5.5/

您需要将 cuda 添加到 $LD_LIBRARY_PATH 变量。如果您正在运行 eclipse,您可以转到 Project properties > Interpreters > Configure and interpreter ... > Environment,然后添加一个指向您的 cuda lib 文件夹的 LD_LIBRARY_PATH 变量(可能是 /Developer/NVIDIA/CUDA-5.5/lib64 )

现在,当您导入 theano 时,它应该会打印一条有关找到 gpu 的消息。您可以在http://deeplearning.net/software/theano/tutorial/using_gpu.html 运行测试代码,看看它是否正在使用 gpu。

【讨论】:

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

Theano中的导数

Theano 在树莓派上使用 Keras

在 Windows 7 上导入 Theano 时出现 g++ 错误

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

(Theano 1)Theano自述文件

AttributeError:模块'theano'没有属性'ifelse'