如何修改 .theanorc 以便 nvcc 在编译期间使用 -m64 标志?

How to modify .theanorc so that nvcc uses the -m64 flag during compilation?

我按照 http://deeplearning.net/software/theano/install_windows.html#install-windows to install theano but running into problems. One of them is that by default using the .theanorc settings on http://deeplearning.net/software/theano/install_windows.html#install-windows 中的步骤操作,在我的机器上 nvcc 尝试在 32 位模式下编译 theano,正如我在 python [=36] 上尝试导入 theano 时所见=](注意下面的-m32):

['nvcc', '-shared', '-O3', '--use
/DEBUG', '-D HAVE_ROUND', '-m32',

然后遇到问题,因为它找不到 cublas.lib,它在我的机器上确实不存在,存储在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\Win32 下的 32 位库(这个文件是否存在于 32 位的另一个用户系统上文件夹?)。我有 cublas.lib 存储在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\x64 下,因此想在 64 位模式下编译。为此,我将 .theanorc 更改为:

[nvcc]
flags = -m64 --use-local-env  --cl-version=2013 

但这并没有达到预期的效果。 nvcc 仍在尝试以 32 位模式编译:

['nvcc', '-shared', '-O3', '--use-local-env', '--cl-version=2013', '-Xlinker', '
/DEBUG', '-D HAVE_ROUND', '-m32', '-Xcompiler', '-m64,-DCUDA_NDARRAY_CUH=a3b91bc

有谁知道如何修改 .theanorc 以便 nvcc 在编译期间使用 -m64 flag 的正确语法?

--machine {32|64} -m Specify 32-bit vs. 64-bit architecture.

Allowed values for this option: 32, 64.

问题是您的 PYTHON 是 32 位的 python。我们不支持混合 python、g++ 和 nvcc 位大小。这意味着它们都必须是 32 位或 64 位。

确保将它们全部安装为 64 位。

如果您想尝试支持这种混合大小写,请检查 theano/sandbox/cuda/nvcc_compiler.py,我们会在那里进行编译。这里我们添加 -m32 标志:

https://github.com/Theano/Theano/blob/master/theano/sandbox/cuda/nvcc_compiler.py#L324

如果你能做到这一点,欢迎提交对 Theano 进行请求更改的 PR。