如何修改 .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。
我按照 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。