Instalando theano en Windows 8 con GPU habilitada

Entiendo que el soporte de Theano para Windows 8.1 está solo en fase experimental, pero me pregunto si alguien tuvo suerte con la resolución de mis problemas. Dependiendo de mi configuración, obtengo tres tipos distintos de errores. Supongo que la resolución de cualquiera de mis errores resolvería mi problema.

He instalado Python utilizando el sistema de WinPython de 32 bits, usando MinGW como se describe aquí . El contenido de mi archivo .theanorc es el siguiente:

 [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 = 

Cuando ejecuto import theano el error es el siguiente:

 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 

También lo he probado utilizando Visual Studio 12.0 que está instalado en mi sistema con el siguiente error:

 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 

En el último error, varias ventanas emergentes me preguntan cómo me gustaría abrir el archivo (.res) antes de que se genere el error.

cl.exe está presente en ambas carpetas (es decir, VS 2010 y VS 2013).

Finalmente, si configuro VS 2013 en la ruta del entorno y establezco los contenidos de .theanorc siguiente manera:

 [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 = 

Obtuve el siguiente error:

 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 comstacktion 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'] 

Si ejecuto import theano sin la opción GPU activada, se ejecuta sin problemas. También las muestras de CUDA se ejecutan sin problemas.

Theano es una gran herramienta para aplicaciones de aprendizaje automático, pero descubrí que su instalación en Windows no es trivial, especialmente para los principiantes (como yo) en la progtwigción. En mi caso, veo 5-6x aceleraciones de mis scripts cuando se ejecutan en una GPU, por lo que definitivamente valió la pena la molestia.

Escribí esta guía en función de mi procedimiento de instalación y está diseñada para ser detallada y, con suerte, completa incluso para personas sin conocimientos previos de la creación de progtwigs en el entorno de Windows. La mayor parte de esta guía se basa en estas instrucciones, pero tuve que cambiar algunos de los pasos para que funcione en mi sistema. Si hay algo que haga que no sea óptimo o que no funcione en su máquina, hágamelo saber e intentaré modificar esta guía en consecuencia.

Estos son los pasos (en orden) que seguí al instalar Theano con la GPU habilitada en mi máquina con Windows 8.1:

Instalacion CUDA

CUDA se puede descargar desde aquí . En mi caso, elegí la versión Notebook de 64 bits para mi laptop NVIDIA Optimus con Geforce 750m.

Verifique que su instalación haya sido exitosa iniciando deviceQuery desde la línea de comandos. En mi caso, se encontraba en la siguiente carpeta: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release . Si tiene éxito, debería ver PASS al final de la prueba.

Instalación de Visual Studio 2010

Instalé esto a través de dreamspark . Si eres estudiante tienes derecho a una versión gratuita. De lo contrario, aún puede instalar la versión Express, que también debería funcionar. Una vez completada la instalación, debería poder llamar a Visual Studio Command Prompt 2010 desde el menú de inicio.

Instalación de Python

Al momento de escribir, Theano en GPU solo permite trabajar con flotadores de 32 bits y está construido principalmente para la versión 2.7 de Python. Theano requiere la mayoría de las bibliotecas científicas básicas de Python, como scipy y numpy . Descubrí que la forma más sencilla de instalarlos era a través de WinPython . Instala todas las dependencias en una carpeta autocontenida que permite una fácil reinstalación si algo sale mal en el proceso de instalación y obtienes algunas herramientas IDE útiles, como el portátil ipython y Spyder, que se instalan de forma gratuita. Para facilitar su uso, es posible que desee agregar la ruta a su python.exe y la ruta a su carpeta de Scripts en las variables de entorno .

Instalacion git

Encontrado aquí

Instalación MinGW

El archivo de configuración está aquí . Revisé todos los archivos de instalación base durante el proceso de instalación. Esto es necesario si se encuentra con el error g ++ descrito a continuación.

Instalacion cygwin

Puedes encontrarlo aquí . Básicamente, utilicé esta utilidad solo para extraer el archivo tar de PyCUDA que ya se proporciona en la instalación básica (por lo que la instalación debería ser sencilla).

Python distutils fix

Abra msvc9compiler.py ubicado en el directorio /lib/distutils/ de su instalación de Python. La línea 641 en mi caso dice: ld_args.append ('/IMPLIB:' + implib_file) . Agregue lo siguiente después de esta línea (la misma sangría):

 ld_args.append('/MANIFEST') 

Instalacion PyCUDA

Fuente de PyCUDA está aquí .

Pasos:

Abra cygwin y navegue a la carpeta PyCUDA (es decir, /cygdrive/c/etc/etc ) y ejecute tar -xzf pycuda-2012.1.tar.gz .

Abra Visual Studio Command Prompt 2010 y navegue hasta el directorio donde se extrajo el tarball y ejecute python configure.py

Abra el archivo ./siteconf.py y cambie los valores para que lea (por ejemplo, para 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'] 

Ejecute los siguientes comandos en el símbolo del sistema VS2010:

 set VS90COMNTOOLS=%VS100COMNTOOLS% python setup.py build python setup.py install 

Crea este archivo python y verifica que obtengas un resultado:

 # 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 

Instalar theano

Abra git bash shell y elija una carpeta en la que desee colocar los archivos de instalación de Theano y ejecute:

 git clone git://github.com/Theano/Theano.git python setup.py install 

Intente abrir python en el símbolo del sistema import theano y ejecute import theano

Si obtiene un error relacionado con g ++, abra MinGW msys.bat en mi caso instalado aquí: C:\MinGW\msys\1.0 e intente importar theano en el shell de MinGW. Luego vuelva a intentar importar theano desde el símbolo del sistema VS2010 y debería estar funcionando ahora.

Cree un archivo en WordPad (¡NO en el Bloc de notas!), .theanorc.txt nombre .theanorc.txt y póngalo en C:\Users\Your_Name\ o donde se encuentre su carpeta de usuarios:

 #!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 

Crea un script de prueba de python y ejecútalo.

 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' 

Verifica que hayas Used the gpu al final y listo.

Aquí están mis pasos simples para instalar theano en una máquina con Windows 10 de 64 bits. Está probado en el código que se muestra aquí.

(Todas las instalaciones son con ruta de instalación predeterminada)

  • instale la distribución de anaconda python 3.x (ya incluye numpy, scipy, matlibplot, etc.)
  • ejecute ‘conda install mingw libpython’ en la línea de comandos
  • instale theano descargándolo del sitio web oficial y realice la instalación de `python setup.py ‘
  • instale el último kit de herramientas CUDA para Windows 10 de 64 bits (ahora es 7.5)
  • Instala Visual Studio 2013 (gratis para Windows 10).
  • cree el archivo .theanorc.txt en la ruta% USERPROFILE% y aquí está el contenido en el archivo .theanorc.txt para ejecutar theano con GPU

[global]

floatX = float32

dispositivo = gpu

[nvcc]

fastmath = True

compiler_bindir = C: \ Archivos de progtwig (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ cl.exe

[cuda]

C: \ Archivos de progtwig \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5


Aquí hay una guía para instalar theano con CUDA en Windows de 64 bits.

Parece sencillo, pero en realidad no lo he probado para garantizar que funcione.

http://pavel.surmenok.com/2014/05/31/installing-theano-with-gpu-on-windows-64-bit/

Siguiendo el tutorial de Matt, me encontré con problemas con nvcc. Necesitaba agregar la ruta a los ejecutables de VS2010 en nvcc.profile (puede encontrarla en la carpeta cuda bin):

"compiler-bindir = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64"

En caso de que desee actualizar a MS Visual Studio 2012 y CUDA 7 en Windows 8.1 x64, consulte este tutorial aquí:

http://machinelearning.berlin/?p=383

Debería funcionar siempre y cuando se adhiera a él exactamente. Todo lo mejor

cristiano

Podría comstackr los archivos cu agregando las dependencias necesarias en el perfil nvcc ubicado en “C: \ Archivos de progtwig \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ bin \ nvcc.profile”

Modifiqué la ruta de inclusión y lib y comencé a trabajar

INCLUYE + = “-I $ (TOP) / include” $ ( SPACE ) “-IC: / Archivos de progtwig (x86) / Microsoft Visual Studio 12.0 / VC / include” $ ( SPACE ) “-IC: \ Archivos de progtwig (x86) ) \ Microsoft SDKs \ Windows \ v7.1A \ Include ”$ ( SPACE ) LIBRARIES = + $ ( SPACE )“ / LIBPATH: $ (TOP) / lib / $ (_ WIN_PLATFORM_) ”$ ( SPACE )“ / LIBPATH: C: / Archivos de progtwig (x86) / Microsoft Visual Studio 12.0 / VC / lib / amd64 ”$ ( SPACE )“ / LIBPATH: C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Lib \ x64 ”$ ( ESPACIO )

He realizado una documentación completa de la instalación, espero que ayude https://planetanacreon.wordpress.com/2015/10/09/install-theano-on-windows-8-1-with-visual-studio-2013-cuda -7-5 /

Utilicé esta guía , y fue muy útil. Lo que muchos de los guías de Windows Theano solo mencionan de pasada (o no lo hacen) es que necesitará comstackr theano desde mingw shell, no desde su IDE.

Corrí mingw-w64.bat, y desde allí “python” e “import theano”. Solo despues de eso lo importa importando desde pycharm works.

Además, las instrucciones oficiales en deeplearning.net son malas porque le dicen que use CUDA 5.5, pero no funcionará con las nuevas tarjetas de video.

Los comentarios también son muy útiles. Si se queja de que faltan crtdefs.h o basetsd.h, haga lo que dice la respuesta de Sunando. Si DESPUÉS DE QUE aún se queje de que el identificador “Iunknown” no está definido en objbase.h, coloque lo siguiente en el archivo C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Include \ objbase.h, en la línea 236 :

 #include  #include  

Tuve que hacer esta última parte para que funcione con la instalación de vanguardia (necesaria para partes de Keras).

También escribí una lista de cosas que me funcionaron, aquí: http://acoupleofrobots.com/everything/?p=2238 Esto es para la versión de 64 bits.