当前位置: 首页 > 面试题库 >

在启用GPU的Windows 8上安装theano

陆信瑞
2023-03-14
问题内容

我了解Theano对Windows
8.1的支持仅处于试验阶段,但我想知道是否有人能解决我的问题。根据我的配置,我得到三种不同类型的错误。我认为解决任何错误都会解决我的问题。

我已用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安装在系统上的错误对其进行了测试:

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

在后一个错误中,几个弹出窗口询问我在抛出错误之前如何打开(.res)文件。

cl.exe 在两个文件夹中均存在(即VS 2010和VS 2013)。

最后,如果我在环境路径中设置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']

如果我在import theano未启用GPU选项的情况下运行,那么它运行就没有问题。CUDA样本运行也没有问题。


问题答案:

Theano是用于机器学习应用程序的出色工具,但是我发现在Windows上安装它并非易事,特别是对于编程初学者(例如我本人)而言。就我而言,在GPU上运行时,我看到脚本的速度提高了5-6倍,因此绝对值得为之烦恼。

我根据安装过程编写了本指南,即使对于以前没有在Windows环境下构建程序的知识的人,它也很冗长且希望完整。本指南的大部分内容都是基于这些说明,但是为了使它在我的系统上正常工作,我不得不更改一些步骤。如果我所做的任何事情可能都不是最佳选择,或者在您的计算机上不起作用,请告诉我,我将尝试相应地修改本指南。

这些是在Windows 8.1计算机上安装启用GPU的Theano时遵循的步骤(按顺序):

CUDA安装

CUDA可以从这里下载。就我而言,我为配备Geforce
750m的NVIDIA Optimus笔记本电脑选择了64位笔记本电脑版本。

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

Visual Studio 2010安装

我是通过dreamspark安装的。如果您是学生,则有资格获得免费版本。如果没有,您仍然可以安装应该也可以正常运行的Express版本。安装完成后,您应该可以从开始菜单调用Visual Studio
Command Prompt 2010。

Python安装

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

Git安装

在这里找到。

MinGW安装

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

Cygwin安装

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

Python distutils修复

打开msvc9compiler.py位于/lib/distutils/您的Python安装目录中。在我的案例中,第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 Command Prompt 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已结束并完成!



 类似资料:
  • 我正试图在Ubuntu 16上安装tensorflow for python 2.7。我正在使用pip安装tensorflow gpu,在终端中收到以下消息: 已满足要求:tensorflow gpu in/usr/local/lib/python3.5/dist-packages已满足要求:wheel 当我尝试导入tensorflow时,它会说

  • 本文向大家介绍Win10+GPU版Pytorch1.1安装的安装步骤,包括了Win10+GPU版Pytorch1.1安装的安装步骤的使用技巧和注意事项,需要的朋友参考一下 安装cuda 更新nvidia驱动 打开GeForce Game Ready Driver或在GeForce Experience中下载符合自己gpu的程序。 选择cuda 打开nvidia控制面板 点击帮助、点击系统信息、在点

  • 我试图在PHP安装mongoDB驱动程序。我使用wamp服务器与PHP版本5.5.12.我试了很多次,但不知道我做错了什么。以下是我所做的: 第一步:我从这个链接下载了mongoDB驱动程序包:http://pecl.php.net/package/mongo/1.5.5/windows我在PHP 5.5选项卡下下载了5.5非线程安全(NTS)x64。 第2步:我解压缩下载的文件并复制php_mo

  • 本文向大家介绍已安装tensorflow-gpu,但keras无法使用GPU加速的解决,包括了已安装tensorflow-gpu,但keras无法使用GPU加速的解决的使用技巧和注意事项,需要的朋友参考一下 问题 我们使用anoconda创建envs环境下的Tensorflow-gpu版的,但是当我们在Pycharm设置里的工程中安装Keras后,发现调用keras无法使用gpu进行加速,且使用的

  • 我通过anaconda使用tensorflow cpu,在使用命令之后 gpu安装 我收到以下错误信息 File"",第1行,在runfile('C:/用户/g/桌面/大师-项目/高斯ROC示例/神经网络工作Example.py',wdir='C:/用户/g/桌面/大师-项目/高斯ROC示例') 文件“C:\ProgramData\Anaconda3\lib\site packages\spyde

  • 本文向大家介绍tensorflow -gpu安装方法(不用自己装cuda,cdnn),包括了tensorflow -gpu安装方法(不用自己装cuda,cdnn)的使用技巧和注意事项,需要的朋友参考一下 TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经