我明白Theano支持Windows 8.1只是在实验阶段,但我想知道是否有人解决我的问题有任何运气。 根据我的configuration,我得到三种不同types的错误。 我认为,我的任何错误的解决scheme将解决我的问题。
我已经使用WinPython 32位系统安装了Python,使用MinGW,如下所述。 我的.theanorc
文件的内容如下:
[global] openmp=False device = gpu [nvcc] flags=-LC:\TheanoPython\python-2.7.6\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\ [blas] ldflags =
当我运行import theano
,错误如下:
nvcc fatal : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2010, 2012, and 2013 are supported ['nvcc', '-shared', '-g', '-O3', '--compiler-bindir', 'C:\\Program Files (x86)\\ Microsoft Visual Studio 10.0\\VC\\bin# flags=-m32 # we have this hard coded for now', '-Xlinker', '/DEBUG', '-m32', '-Xcompiler', '-DCUDA_NDARRAY_CUH=d67f7c8a21 306c67152a70a88a837011,/Zi,/MD', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-pa ckages\\theano\\sandbox\\cuda', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-pac kages\\numpy\\core\\include', '-IC:\\TheanoPython\\python-2.7.6\\include', '-o', 'C:\\Users\\Matej\\AppData\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel6 4_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray .pyd', 'mod.cu', '-LC:\\TheanoPython\\python-2.7.6\\libs', '-LNone\\lib', '-LNon e\\lib64', '-LC:\\TheanoPython\\python-2.7.6', '-lpython27', '-lcublas', '-lcuda rt'] ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return st atus', 1, 'for cmd', 'nvcc -shared -g -O3 --compiler-bindir C:\\Program Files (x 86)\\Microsoft Visual Studio 10.0\\VC\\bin# flags=-m32 # we have this hard coded for now -Xlinker /DEBUG -m32 -Xcompiler -DCUDA_NDARRAY_CUH=d67f7c8a21306c67152a 70a88a837011,/Zi,/MD -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\thean o\\sandbox\\cuda -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\numpy\\co re\\include -IC:\\TheanoPython\\python-2.7.6\\include -o C:\\Users\\Matej\\AppDa ta\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_60_Stepp ing_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LC:\\TheanoP ython\\python-2.7.6\\libs -LNone\\lib -LNone\\lib64 -LC:\\TheanoPython\\python-2 .7.6 -lpython27 -lcublas -lcudart') WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not availabl e
我也用我的系统上安装的Visual Studio 12.0
进行了testing,出现以下错误:
mod.cu nvlink fatal : Could not open input file 'C:/Users/Matej/AppData/Local/Temp/tm pxft_00001b70_00000000-28_mod.obj' ['nvcc', '-shared', '-g', '-O3', '--compiler-bindir', 'C:\\Program Files (x86)\\ Microsoft Visual Studio 12.0\\VC\\bin\\', '-Xlinker', '/DEBUG', '-m32', '-Xcompi ler', '-LC:\\TheanoPython\\python-2.7.6\\libs,-DCUDA_NDARRAY_CUH=d67f7c8a21306c6 7152a70a88a837011,/Zi,/MD', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-package s\\theano\\sandbox\\cuda', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages \\numpy\\core\\include', '-IC:\\TheanoPython\\python-2.7.6\\include', '-o', 'C:\ \Users\\Matej\\AppData\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Fam ily_6_Model_60_Stepping_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd' , 'mod.cu', '-LC:\\TheanoPython\\python-2.7.6\\libs', '-LNone\\lib', '-LNone\\li b64', '-LC:\\TheanoPython\\python-2.7.6', '-lpython27', '-lcublas', '-lcudart'] ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return st atus', 1, 'for cmd', 'nvcc -shared -g -O3 --compiler-bindir C:\\Program Files (x 86)\\Microsoft Visual Studio 12.0\\VC\\bin\\ -Xlinker /DEBUG -m32 -Xcompiler -LC :\\TheanoPython\\python-2.7.6\\libs,-DCUDA_NDARRAY_CUH=d67f7c8a21306c67152a70a88 a837011,/Zi,/MD -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\theano\\sa ndbox\\cuda -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\numpy\\core\\i nclude -IC:\\TheanoPython\\python-2.7.6\\include -o C:\\Users\\Matej\\AppData\\L ocal\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_60_Stepping_3 _GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LC:\\TheanoPython \\python-2.7.6\\libs -LNone\\lib -LNone\\lib64 -LC:\\TheanoPython\\python-2.7.6 -lpython27 -lcublas -lcudart') WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not availabl e
在后面的错误,几个popup式窗口问我怎么想在引发错误之前打开(.res)文件。
cl.exe
存在于这两个文件夹(即VS 2010和VS 2013)。
最后,如果我在环境path中设置VS 2013并设置.theanorc
内容如下:
[global] base_compiledir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin openmp=False floatX = float32 device = gpu [nvcc] flags=-LC:\TheanoPython\python-2.7.6\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\ [blas] ldflags =
我得到以下错误:
c:\theanopython\python-2.7.6\include\pymath.h(22): warning: dllexport/dllimport conflict with "round" c:\program files\nvidia gpu computing toolkit\cuda\v6.5\include\math_functions.h(2455): here; dllimport/dllexport dropped mod.cu(954): warning: statement is unreachable mod.cu(1114): error: namespace "std" has no member "min" mod.cu(1145): error: namespace "std" has no member "min" mod.cu(1173): error: namespace "std" has no member "min" mod.cu(1174): error: namespace "std" has no member "min" mod.cu(1317): error: namespace "std" has no member "min" mod.cu(1318): error: namespace "std" has no member "min" mod.cu(1442): error: namespace "std" has no member "min" mod.cu(1443): error: namespace "std" has no member "min" mod.cu(1742): error: namespace "std" has no member "min" mod.cu(1777): error: namespace "std" has no member "min" mod.cu(1781): error: namespace "std" has no member "min" mod.cu(1814): error: namespace "std" has no member "min" mod.cu(1821): error: namespace "std" has no member "min" mod.cu(1853): error: namespace "std" has no member "min" mod.cu(1861): error: namespace "std" has no member "min" mod.cu(1898): error: namespace "std" has no member "min" mod.cu(1905): error: namespace "std" has no member "min" mod.cu(1946): error: namespace "std" has no member "min" mod.cu(1960): error: namespace "std" has no member "min" mod.cu(3750): error: namespace "std" has no member "min" mod.cu(3752): error: namespace "std" has no member "min" mod.cu(3784): error: namespace "std" has no member "min" mod.cu(3786): error: namespace "std" has no member "min" mod.cu(3789): error: namespace "std" has no member "min" mod.cu(3791): error: namespace "std" has no member "min" mod.cu(3794): error: namespace "std" has no member "min" mod.cu(3795): error: namespace "std" has no member "min" mod.cu(3836): error: namespace "std" has no member "min" mod.cu(3838): error: namespace "std" has no member "min" mod.cu(4602): error: namespace "std" has no member "min" mod.cu(4604): error: namespace "std" has no member "min" 31 errors detected in the compilation of "C:/Users/Matej/AppData/Local/Temp/tmpxft_00001d84_00000000-10_mod.cpp1.ii". ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return status', 2, 'for cmd', 'nvcc -shared -g -O3 -Xlinker /DEBUG -m32 -Xcompiler -DCUDA_NDARRAY_CUH=d67f7c8a21306c67152a70a88a837011,/Zi,/MD -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\theano\\sandbox\\cuda -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\numpy\\core\\include -IC:\\TheanoPython\\python-2.7.6\\include -o C:\\Users\\Matej\\AppData\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LC:\\TheanoPython\\python-2.7.6\\libs -LNone\\lib -LNone\\lib64 -LC:\\TheanoPython\\python-2.7.6 -lpython27 -lcublas -lcudart') ERROR:theano.sandbox.cuda:Failed to compile cuda_ndarray.cu: ('nvcc return status', 2, 'for cmd', 'nvcc -shared -g -O3 -Xlinker /DEBUG -m32 -Xcompiler -DCUDA_NDARRAY_CUH=d67f7c8a21306c67152a70a88a837011,/Zi,/MD -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\theano\\sandbox\\cuda -IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\numpy\\core\\include -IC:\\TheanoPython\\python-2.7.6\\include -o C:\\Users\\Matej\\AppData\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LC:\\TheanoPython\\python-2.7.6\\libs -LNone\\lib -LNone\\lib64 -LC:\\TheanoPython\\python-2.7.6 -lpython27 -lcublas -lcudart') mod.cu ['nvcc', '-shared', '-g', '-O3', '-Xlinker', '/DEBUG', '-m32', '-Xcompiler', '-DCUDA_NDARRAY_CUH=d67f7c8a21306c67152a70a88a837011,/Zi,/MD', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\theano\\sandbox\\cuda', '-IC:\\TheanoPython\\python-2.7.6\\lib\\site-packages\\numpy\\core\\include', '-IC:\\TheanoPython\\python-2.7.6\\include', '-o', 'C:\\Users\\Matej\\AppData\\Local\\Theano\\compiledir_Windows-8-6.2.9200-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.6-32\\cuda_ndarray\\cuda_ndarray.pyd', 'mod.cu', '-LC:\\TheanoPython\\python-2.7.6\\libs', '-LNone\\lib', '-LNone\\lib64', '-LC:\\TheanoPython\\python-2.7.6', '-lpython27', '-lcublas', '-lcudart']
如果我运行没有GPU选项的import theano
,它运行没有问题。 此外,CUDA示例运行没有问题。
Theano是机器学习应用程序的一个很好的工具,但是我发现它在Windows上的安装并不是微不足道的,特别是初学者(比如我自己)在编程方面。 就我而言,在GPU上运行时,我看到我的脚本速度提高了5-6倍,所以这绝对是值得的。
我根据自己的安装过程编写了本指南,即使对于在Windows环境下无法理解构建程序的人,也是很详细的,希望能够完成。 本指南的大部分内容都基于这些说明,但是我必须更改一些步骤才能在我的系统上运行。 如果有什么我可以做的,可能不是最佳的,或者在您的机器上无法正常工作,请告诉我,我将尝试相应地修改本指南。
以下是在我的Windows 8.1机器上启用GPU的情况下安装Theano时所遵循的步骤(按顺序):
CUDA可以从这里下载。 在我的情况下,我选择了64位笔记本版本,用于配备Geforce 750m的NVIDIA Optimus笔记本电脑。
通过从命令行启动deviceQuery
来验证您的安装是否成功。 在我的情况下,这是位于以下文件夹: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release
。 如果成功,您应该在考试结束时看到PASS。
我通过dreamspark安装了这个。 如果你是一个学生,你有权免费版本。 如果不是的话,你仍然可以安装Express版本 。 安装完成后,您应该能够从开始菜单调用Visual Studio命令提示符2010。
在撰写本文时,Theano在GPU上只允许使用32位浮点数,主要是为Python的2.7版本构建的。 Theano需要大多数基础科学Python库,如scipy
和numpy
。 我发现安装这些最简单的方法是通过WinPython 。 它将所有的依赖关系安装在一个独立的文件夹中,如果在安装过程中出现问题,可以轻松地重新安装,并且还可以免费安装一些有用的IDE工具,如ipython notebook和Spyder。 为了方便使用,您可能希望将路径添加到您的python.exe和路径到您的脚本文件夹中的环境变量 。
在这里找到。
安装文件在这里 。 我在安装过程中检查了所有的基本安装文件。 如果遇到下面描述的g ++错误,这是必需的。
你可以在这里找到它。 我基本上只使用这个实用程序来提取基本安装中已经提供的PyCUDA tar文件(所以安装应该很简单)。
打开msvc9compiler.py
位于Python安装的/lib/distutils/
目录下。 在我的情况641行读取: ld_args.append ('/IMPLIB:' + implib_file)
。 在这一行(相同的缩进)之后添加以下内容:
ld_args.append('/MANIFEST')
PyCUDA的来源在这里 。
脚步:
打开cygwin并导航到PyCUDA文件夹(即/cygdrive/c/etc/etc
)并执行tar -xzf pycuda-2012.1.tar.gz
。
打开Visual Studio命令提示符2010并导航到提取tarball的目录并执行python configure.py
打开./siteconf.py并更改值(例如,对于CUDA 6.5):
BOOST_INC_DIR = [] BOOST_LIB_DIR = [] BOOST_COMPILER = 'gcc43' USE_SHIPPED_BOOST = True BOOST_PYTHON_LIBNAME = ['boost_python'] BOOST_THREAD_LIBNAME = ['boost_thread'] CUDA_TRACE = False CUDA_ROOT = 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v6.5' CUDA_ENABLE_GL = False CUDA_ENABLE_CURAND = True CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib/Win32'] CUDADRV_LIBNAME = ['cuda'] CUDART_LIB_DIR = ['${CUDA_ROOT}/lib/Win32'] CUDART_LIBNAME = ['cudart'] CURAND_LIB_DIR = ['${CUDA_ROOT}/lib/Win32'] CURAND_LIBNAME = ['curand'] CXXFLAGS = ['/EHsc'] LDFLAGS = ['/FORCE']
在VS2010命令提示符处执行以下命令:
set VS90COMNTOOLS=%VS100COMNTOOLS% python setup.py build python setup.py install
创建这个python文件并确认你得到一个结果:
# from: http://documen.tician.de/pycuda/tutorial.html import pycuda.gpuarray as gpuarray import pycuda.driver as cuda import pycuda.autoinit import numpy a_gpu = gpuarray.to_gpu(numpy.random.randn(4,4).astype(numpy.float32)) a_doubled = (2*a_gpu).get() print a_doubled print a_gpu
打开git bash shell并选择一个你想放置Theano安装文件的文件夹并执行:
git clone git://github.com/Theano/Theano.git python setup.py install
尝试在VS2010命令提示符下打开python并运行import theano
如果你得到一个g ++相关的错误,在我的情况下打开MinGW msys.bat安装在这里: C:\MinGW\msys\1.0
并且尝试在MinGW shell中导入theano。 然后重试从VS2010命令提示符导入theano,它应该现在工作。
在写字板(不记事本)中创建一个文件,将其命名为.theanorc.txt
并将其放在C:\Users\Your_Name\
或任何您的用户文件夹所在的位置:
#!sh [global] device = gpu floatX = float32 [nvcc] compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin # flags=-m32 # we have this hard coded for now [blas] ldflags = # ldflags = -lopenblas # placeholder for openblas support
创建一个测试python脚本并运行它:
from theano import function, config, shared, sandbox import theano.tensor as T import numpy import time vlen = 10 * 30 * 768 # 10 x #cores x # threads per core iters = 1000 rng = numpy.random.RandomState(22) x = shared(numpy.asarray(rng.rand(vlen), config.floatX)) f = function([], T.exp(x)) print f.maker.fgraph.toposort() t0 = time.time() for i in xrange(iters): r = f() t1 = time.time() print 'Looping %d times took' % iters, t1 - t0, 'seconds' print 'Result is', r if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]): print 'Used the cpu' else: print 'Used the gpu'
验证你在最后Used the gpu
,你就完成了!
这里是我在64位Windows 10机器上安装theano的简单步骤。 它在此处列出的代码上进行了测试
(所有安装都使用默认的安装路径)
[全球]
floatX = float32
设备= gpu
[NVCC]
fastmath = True
compiler_bindir = C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ cl.exe
[CUDA]
C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v7.5
以下是在64位Windows上安装CUDA的说明。
这似乎很直接,但我没有真正测试它,以确保它的工作。
http://pavel.surmenok.com/2014/05/31/installing-theano-with-gpu-on-windows-64-bit/
在Matt的教程之后,我遇到了nvcc的问题。 我需要在nvcc.profile中添加VS2010可执行文件的路径(可以在cuda bin文件夹中找到它):
"compiler-bindir = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64"
如果您想升级到Windows 8.1 x64上的MS Visual Studio 2012和CUDA 7,请查看本教程:
http://machinelearning.berlin/?p=383
它应该工作,只要你坚持到底。 祝一切顺利
基督教
我可以通过在位于“C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v7.5 \ bin \ nvcc.profile”中的nvcc配置文件中添加所需的依赖项来编译cu文件。
我修改了include和lib路径,并开始工作。
包括“$( 空格 )”-IC:\ Program Files(x86)/ Microsoft Visual Studio 12.0 / VC / )\ Microsoft SDKs \ Windows \ v7.1A \ Include“$( SPACE )LIBRARIES = + $( SPACE )”/ LIBPATH:$(TOP)/ lib / $(_ WIN_PLATFORM_)“$( SPACE )”/ LIBPATH:C: / Program Files(x86)/ Microsoft Visual Studio 12.0 / VC / lib / amd64“$( SPACE )”/ LIBPATH:C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Lib \ x64“$( 空间 )
我已经做了一个完整的安装文件,希望它有助于https://planetanacreon.wordpress.com/2015/10/09/install-theano-on-windows-8-1-with-visual-studio-2013-cuda -7-5 /
我使用这个指南 ,这是相当有帮助的。 很多Windows Theano指南中只提及了(或者根本没有),就是你需要从mingw shell编译theano,而不是从你的IDE编译。
我跑了mingw-w64.bat,从那里“python”和“import theano”。 只有在从pycharm中导入它的工作。
此外,在deeplearning.net上的官方说明是不好的,因为它们告诉你使用CUDA 5.5,但它不适用于较新的视频卡。
评论也相当有帮助。 如果它抱怨缺少crtdefs.h或basetsd.h,请按照Sunando的回答说。 如果在此之后它仍然抱怨在objbase.h中未定义标识符“Iunknown”,请将以下代码粘贴到C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \ objbase.h文件的第236行:
#include <wtypes.h> #include <unknwn.h>
我必须做这最后一部分,使其与边缘安装(凯拉斯的部分要求)的工作。
我也写了一个适用于我的东西的列表,在这里: http : //acoupleofrobots.com/everything/?p=2238这是64位版本。