Установка anano в Windows 8 с включенным графическим процессором

Я понимаю, что поддержка Theano для Windows 8.1 находится на экспериментальной стадии, но мне интересно, удастся ли кому-либо решить мои проблемы. В зависимости от моей конфигурации я получаю три разных типа ошибок. Я предполагаю, что разрешение любой из моих ошибок решит мою проблему.

Я установил Python, используя 32-разрядную систему WinPython, используя 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 работают без проблем.

Ответы

Ответ 1

Theano - отличный инструмент для приложений машинного обучения, но я обнаружил, что его установка на Windows не является тривиальной, особенно для начинающих (например, я) в программировании. В моем случае я вижу 5-6x ускорений моих скриптов при работе на графическом процессоре, поэтому это определенно стоило проблем.

Я написал это руководство на основе моей процедуры установки и должен быть подробным и, надеюсь, полным даже для людей, не имеющих предварительного понимания создания программ в среде Windows. В основном это руководство основано на этих инструкциях, но мне пришлось изменить некоторые шаги, чтобы он работал в моей системе. Если есть что-то, что я делаю, что может быть не оптимальным или что не работает на вашей машине, пожалуйста, сообщите мне, и я попытаюсь соответствующим образом изменить это руководство.

Это шаги (по порядку), которые я выполнил при установке Theano с включенным графическим процессором на моем компьютере под управлением Windows 8.1:

Установка CUDA

CUDA можно загрузить с здесь. В моем случае я выбрал 64-битную версию ноутбука для своего ноутбука NVIDIA Optimus с Geforce 750m.

Убедитесь, что ваша установка прошла успешно, запустив deviceQuery из командной строки. В моем случае это было расположено в следующей папке: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release. В случае успеха вы должны увидеть PASS в конце теста.

Установка Visual Studio 2010

Я установил это через dreamspark. Если вы студент, вы имеете право на бесплатную версию. Если нет, вы все равно можете установить Экспресс-версию, которая должна работать так же хорошо. После завершения установки вы сможете вызвать Visual Studio Command Prompt 2010 из меню "Пуск".

Установка Python

На момент написания документа Theano на GPU разрешает работать только с 32-битными поплавками и в основном создан для версии версии Python версии 2.7. Theano требует большинство базовых научных библиотек Python, таких как scipy и numpy. Я обнаружил, что самый простой способ установить их - через WinPython. Он устанавливает все зависимости в автономной папке, которая позволяет легко переустановить, если что-то пойдет не так в процессе установки, и вы также получите бесплатные инструменты IDE, такие как ipython notebook и Spyder. Для удобства использования вы можете добавить путь к вашему python.exe и путь к папке Scripts в переменных окружения.

Git установка

Найден здесь.

Установка MinGW

Файл настроек здесь. Я проверил все базовые установочные файлы в процессе установки. Это необходимо, если вы столкнулись с ошибкой g++, описанной ниже.

Установка Cygwin

Здесь вы можете найти здесь. Я в основном использовал эту утилиту только для извлечения tar файла PyCUDA, который уже предоставлен в базовой установке (поэтому установка должна быть простой).

Исправления python fix

Откройте 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 и выберите папку, в которую вы хотите поместить файлы установки Theano, и выполните:

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

Попробуйте открыть python в командной строке VS2010 и запустите import theano

Если вы получаете связанную с g++ ошибку, откройте MinGW msys.bat в моем случае, установленном здесь: C:\MinGW\msys\1.0 и попробуйте импортировать theano в оболочку MinGW. Затем повторите попытку импортирования theano из VS2010 Command Prompt, и он должен работать сейчас.

Создайте файл в WordPad (NOT Notepad!), назовите его .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

Создайте тестовый питон script и запустите его:

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 в конце, и все готово!

Ответ 2

Вот мои простые шаги для установки theano на 64-битный Windows 10. Он протестировал код, указанный здесь

(Вся установка выполняется по умолчанию)

  • установить дистрибутив anaconda python 3.x(он уже включает numpy, scipy, matlibplot и т.д.).
  • запустить 'conda install mingw libpython' в командной строке
  • установите theano, загрузив его с официального сайта и установите `python setup.py install '
  • установить последний CUDA toolkit для 64-битных окон 10 (теперь 7,5)
  • установить визуальную студию 2013 (бесплатно для Windows 10)
  • создайте файл .theanorc.txt в папке% USERPROFILE% и здесь содержимое в файле .theanorc.txt для запуска theano с графическим процессором

[глобальный]

floatX = float32

device = 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 Computing Toolkit\CUDA\v7.5


Ответ 4

Следуя руководству Мэтта, я столкнулся с проблемами с nvcc. Мне нужно было добавить путь к исполняемым файлам VS2010 в nvcc.profile(вы можете найти его в папке cuda bin):

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

Ответ 5

Если вы хотите перейти на MS Visual Studio 2012 и CUDA 7 на Windows 8.1 x64, ознакомьтесь с этим руководством:

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

Он должен работать до тех пор, пока вы придерживаетесь его точно. Все лучшее

Christian

Ответ 6

Я мог бы скомпилировать файлы cu, добавив необходимые зависимости в профиль nvcc, расположенный в папке "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.profile"

Я изменил путь include и lib, и он начал работать.

ВКЛЮЧАЕТ + = "-I $(TOP)/включить" $(SPACE) "-IC:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include" $(SPACE) "-IC:\Program Файлы (x86)\Microsoft SDK\Windows\v7.1A\Include" $(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 SDK\Windows\v7.1A\Lib\x64 "$ (SPACE)

Я сделал полную документацию по установке, надеюсь, что она поможет https://planetanacreon.wordpress.com/2015/10/09/install-theano-on-windows-8-1-with-visual-studio-2013-cuda-7-5/

Ответ 7

Я использовал это руководство, и это было очень полезно. То, что многие из Windows Theano руководят только упоминанием попутно (или вовсе не), заключается в том, что вам нужно будет скомпилировать theano из оболочки mingw, а не из вашей среды разработки.

Я запускал mingw-w64.bat, а оттуда "python" и "import anano". Только после того, как он импортирует его из пиротехнических работ.

Кроме того, официальные инструкции по deeplayning.net плохи, потому что они говорят вам использовать CUDA 5.5, но он не будет работать с новыми видеокартами.

Комментарии также весьма полезны. Если он жалуется на отсутствие crtdefs.h или basetsd.h, сделайте то, что говорит Sunando. Если ПОСЛЕ ТОГО, что он все еще жалуется, что идентификатор "Iunknown" равен undefined в objbase.h, придерживайтесь следующего в C:\Program Files (x86)\Microsoft SDK\Windows\v7.1A\Include\objbase.h файл в строке 236:

#include <wtypes.h>
#include <unknwn.h>

Мне пришлось сделать эту последнюю часть, чтобы она работала с установкой кровотечения (требуется для частей Keras).

Я также написал список вещей, которые работали для меня, здесь: http://acoupleofrobots.com/everything/?p=2238 Это для 64-разрядной версии.