在启用了GPU的Windows 8上安装theano

我明白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安装

CUDA可以从这里下载。 在我的情况下,我选择了64位笔记本版本,用于配备Geforce 750m的NVIDIA Optimus笔记本电脑。

通过从命令行启动deviceQuery来验证您的安装是否成功。 在我的情况下,这是位于以下文件夹: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release 如果成功,您应该在考试结束时看到PASS。

Visual Studio 2010安装

我通过dreamspark安装了这个。 如果你是一个学生,你有权免费版本。 如果不是的话,你仍然可以安装Express版本 。 安装完成后,您应该能够从开始菜单调用Visual Studio命令提示符2010。

Python安装

在撰写本文时,Theano在GPU上只允许使用32位浮点数,主要是为Python的2.7版本构建的。 Theano需要大多数基础科学Python库,如scipynumpy 我发现安装这些最简单的方法是通过WinPython 。 它将所有的依赖关系安装在一个独立的文件夹中,如果在安装过程中出现问题,可以轻松地重新安装,并且还可以免费安装一些有用的IDE工具,如ipython notebook和Spyder。 为了方便使用,您可能希望将路径添加到您的python.exe和路径到您的脚本文件夹中的环境变量 。

Git安装

在这里找到。

MinGW安装

安装文件在这里 。 我在安装过程中检查了所有的基本安装文件。 如果遇到下面描述的g ++错误,这是必需的。

Cygwin安装

你可以在这里找到它。 我基本上只使用这个实用程序来提取基本安装中已经提供的PyCUDA tar文件(所以安装应该很简单)。

Python distutils修复

打开msvc9compiler.py位于Python安装的/lib/distutils/目录下。 在我的情况641行读取: ld_args.append ('/IMPLIB:' + implib_file) 在这一行(相同的缩进)之后添加以下内容:

 ld_args.append('/MANIFEST') 

PyCUDA安装

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 

安装Theano

打开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的简单步骤。 它在此处列出的代码上进行了测试

(所有安装都使用默认的安装路径)

  • 安装anaconda python 3.x发行版(它已经包含了numpy,scipy,matlibplot等)
  • 在命令行中运行“conda install mingw libpython”
  • 安装theano从官方网站下载并执行`python setup.py install'
  • 安装最新的64位Windows 10 CUDA工具包(现在是7.5)
  • 安装Visual Studio 2013(免费的Windows 10)
  • 在%USERPROFILE%路径下创建.theanorc.txt文件,这里是.theanorc.txt文件中用GPU运行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位版本。