让 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的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 7 上导入 Theano 时出现 g++ 错误