【发布时间】:2016-03-02 18:36:19
【问题描述】:
我正在尝试安装 Theano,这是我的情况。
系统是 Windows 10(64 位),安装了 CUDA 7.5 和 Visual Studio 2013。Python 发行版是 Enthought Canopy(2.7.10,32 位),带有 pip、numpy(1.9.2-3)和scipy (0.17.0-2)。
安装如下, 1.用pip安装Theano(0.7); 2.使用enpkg工具安装mingw(4.8.1-2)和libpython(1.2); 3.将新建的libpython27.a复制到${PYTHONHOME}/Libs中; 4. 编辑并保存c:\users\${myName}下的.theanorc.txt为
[global]
devive=gpu
floatX=float32
[blas]
ldflags=${PYTHONHOME}\Scripts -lmk2_core -lmk2_intel_thread -lmk2_rt
[nvcc]
flags=-LC:\Users\${myName}\AppData\Local\Enthought\Canopy32\User\libs
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
[gcc]
cxxflags=
当我尝试导入 theano 时,我收到以下警告和错误:
mod.cu(1019):警告:语句无法访问
mod.cu(1019):警告:语句无法访问
mod.cu LINK : 致命错误 LNK1181: 无法打开输入文件 'cublas.lib'
['nvcc', '-shared', '-O3', '-LC:\Users\${myName}\AppData\Local\Enthought\Canopy32\User\libs', '--compiler-bindir' , 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin', '-Xlinker', '/DEBUG', '-D HAVE_ROUND', '-m32', '-Xcompiler', '-DCUDA_NDARRAY_CUH =11b90075e2397c684f9dc0f7276eab8f,-D NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD', '-IC:\Users\${myName}\AppData\Local\Enthought\Canopy32\User\lib\site-packages\theano\sandbox\cuda' , '-IC:\Users\${myName}\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\lib\site-packages\numpy\core\include', '- IC:\Users\${myName}\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\include', '-o', 'C:\Users\${myName} \AppData\Local\Theano\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_71_Stepping_1_GenuineIntel-2.7.10-32\cuda_ndarray\cuda_ndarray.pyd', 'mod.cu', '-LC:\Users\${myName}\AppData\ Local\Enthought\Canopy32\User\EGG-INFO\mingw\usr\x86_64-w64-mingw32\lib', '-LC:\Users\${myName}\AppData\Loc al\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\libs', '-LC:\Users\${myName}\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.6 .2.3262.win-x86', '-lpython27', '-lcublas', '-lcudart']
错误 (theano.sandbox.cuda): 无法编译 cuda_ndarray.cu: ('nvcc return status', 2, 'for cmd', 'nvcc -shared -O3 -LC:\Users\${myName}\ AppData\Local\Enthought\Canopy32\User\libs --compiler-bindir C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin -Xlinker /DEBUG -D HAVE_ROUND -m32 -Xcompiler -DCUDA_NDARRAY_CUH=11b90075e2397c684f9dc0f7276eab8f,- D NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD -IC:\Users\${myName}\AppData\Local\Enthought\Canopy32\User\lib\site-packages\theano\sandbox\cuda -IC:\Users\${ myName}\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\lib\site-packages\numpy\core\include -IC:\Users\${myName}\AppData\Local \Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\include -o C:\Users\${myName}\AppData\Local\Theano\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_71_Stepping_1_GenuineIntel-2.7。 10-32\cuda_ndarray\cuda_ndarray.pyd mod.cu -LC:\Users\${myName}\AppData\Local\Enthought\Canopy32\User\EGG-INFO\mingw\usr\x86_64-w64-m ingw32\lib -LC:\Users\${myName}\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86\libs -LC:\Users\${myName}\AppData\ Local\Enthought\Canopy32\App\appdata\canopy-1.6.2.3262.win-x86 -lpython27 -lcublas -lcudart')
警告(theano.sandbox.cuda):CUDA 已安装,但设备 gpu 不可用(错误:cuda 不可用)
我想知道是不是 32 位 Python 与 64 位系统导致了问题。
【问题讨论】:
-
关于编译/链接错误,是的,
-m32告诉nvcc构建 32 位可执行文件。 CUDA 7.5 中不包含cublas.lib的 32 位版本。删除 32 位 cublas 的通知实际上是在 CUDA 7.0 release notes "中给出的 CUDA 驱动程序或 CUDA 工具包不再支持以下功能:... ‣ 32 位版本的 CUDA Toolkit 科学库,包括 cuBLAS 、cuSPARSE、cuFFT、cuRAND 和 NPP”。 WARNING ... gpu is not available 是一个单独的问题 -
@RobertCrovella 谢谢,我切换到 64 位 Python 并且它工作了
-
@chouzhupk:请添加一个简短的答案来描述您的解决方案
标签: python windows theano-cuda