web-dev-qa-db-ja.com

GPUを有効にしてWindows 8にtheanoをインストールする

TheanoがWindows 8.1をサポートしているのは実験段階にあることを理解していますが、問題を解決するために運が良かったのではないかと思います。設定に応じて、3つの異なるタイプのエラーが発生します。私は自分のエラーを解決することで問題が解決すると思います。

Python WinPython 32ビットシステムを使用し、説明されているように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']

GPUオプションをオンにせずにimport theanoを実行すると、問題なく実行されます。また、CUDAサンプルは問題なく実行されます。

15
Matt

Theanoは機械学習アプリケーションに最適なツールですが、Windowsへのインストールは、プログラミングの初心者(私のように)にとって特に簡単なものではないことがわかりました。私の場合、GPUで実行するとスクリプトが5〜6倍高速化するので、面倒なことは間違いありません。

このガイドは私のインストール手順に基づいて作成したものであり、Windows環境でプログラムを構築することについて事前に理解していない人にとっても、冗長でうまくいけば完了することを意図しています。このガイドのほとんどは、これらの 手順 に基づいていますが、システムで機能させるために、いくつかの手順を変更する必要がありました。最適でない可能性があることや、ご使用のマシンで機能しないことがある場合は、お知らせください。このガイドを適宜変更します。

Windows 8.1マシンでGPUを有効にしてTheanoをインストールするときに実行した手順(順序)は次のとおりです。

CUDAのインストール

CUDAは here からダウンロードできます。私の場合、Geforce 750m搭載のNVIDIA Optimusラップトップに64ビットノートブックバージョンを選択しました。

コマンドラインからdeviceQueryを起動して、インストールが成功したことを確認します。私の場合、これは次のフォルダーにあります:_C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release_。成功した場合、テストの最後にPASSが表示されます。

Visual Studio 2010のインストール

dreamspark でインストールしました。学生の方は無料版をご利用いただけます。そうでない場合でも、 Express version をインストールできます。これも同様に機能します。インストールが完了すると、スタートメニューからVisual Studioコマンドプロンプト2010を呼び出せるようになります。

Pythonのインストール

執筆時点では、GPU上のTheanoは32ビットの浮動小数点での作業のみを許可し、主に2.7バージョンのPython用にビルドされています。 Theanoは、基本的な科学的なPython scipynumpyなどのライブラリのほとんどを必要とします。これらをインストールする最も簡単な方法は、 WinPython 。すべての依存関係を自己完結型フォルダーにインストールします。これにより、インストールプロセスで問題が発生した場合に簡単に再インストールでき、便利なIDEツール(ipythonノートブックやSpyderなど)がインストールされます使いやすくするために、python.exeへのパスとScriptsフォルダーへのパスを 環境変数 に追加することをお勧めします。

Gitのインストール

見つかりました ここ

MinGWのインストール

設定ファイルは ここ です。インストールプロセス中にすべての基本インストールファイルを確認しました。これは、以下で説明するg ++エラーが発生した場合に必要です。

Cygwinのインストール

あなたはそれを見つけることができます ここ 。基本的にこのユーティリティは、ベースインストールですでに提供されているPyCUDA tarファイルを抽出するためにのみ使用しました(そのため、インストールは簡単です)。

Python distutilsの修正

Pythonインストール済み環境の_msvc9compiler.py_ディレクトリにある_/lib/distutils/_を開きます。私の場合、641行目はld_args.append ('/IMPLIB:' + implib_file)です。この行の後に以下を追加します。 (同じインデント):

_ld_args.append('/MANIFEST')
_

PyCUDAのインストール

PyCUDAのソースは here です。

手順:

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_そしてtheanoをMinGWシェルにインポートしてみてください。次に、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_が得られたことを確認して、完了です!

30
Matt

以下は、64ビットのWindows 10マシンにtheanoをインストールするための簡単な手順です。リストされたコードでテストされています here

(すべてのインストールはデフォルトのインストールパスで行われます)

  • インストール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ファイルを作成します。GPUでtheanoを実行するための.theanorc.txtファイルの内容は次のとおりです

[グローバル]

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


5
tangkk

以下は、64ビットWindowsでCUDAを使用してtheanoをインストールするためのガイドです。

簡単なようですが、実際に動作することを確認するためのテストは行っていません。

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

2
brentlance

「C:\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.profile」にあるnvccプロファイルに必要な依存関係を追加して、cuファイルをコンパイルできます

インクルードとlibパスを変更すると、動作し始めました。

含む+ =“ -I $(TOP)/ include” $([〜#〜] space [〜#〜])“ -IC:/プログラムファイル(x86)/ Microsoft Visual Studio 12.0/VC/include "$([〜#〜] space [〜#〜])“ -IC :\ Program Files(x86)\ 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” $([〜#〜] space [〜#〜]

インストールの完全なドキュメントを作成しました。それが役に立てば幸い https://planetanacreon.wordpress.com/2015/10/09/install-theano-on-windows-8-1-with-visual-studio -2013-cuda-7-5 /

0
Sunando

Windows 8.1 x64でMS Visual Studio 2012およびCUDA 7にアップグレードする場合は、このチュートリアルをこちらで確認してください。

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

あなたがそれに正確に固執する限り、それはうまくいくはずです。ではごきげんよう

キリスト教徒

私は このガイド を使用しましたが、それは非常に役に立ちました。 Windows Theanoガイドの多くがパス(またはまったく)で言及していないのは、IDEからではなく、mingwシェルからtheanoをコンパイルする必要があるということです。

私はmingw-w64.batを実行し、そこから「python」と「import theano」を実行しました。その後のみ、pycharmからのインポートが機能します。

さらに、deeplearning.netの公式の説明はCUDA 5.5を使用するように指示しているため不適切ですが、新しいビデオカードでは動作しません。

コメントも非常に役立ちます。 crtdefs.hまたはbasetsd.hが欠落しているというメッセージが表示された場合は、Sunandoの回答に従ってください。識別子「Iunknown」がobjbase.hで定義されていないというメッセージがまだ表示される場合は、C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.1A\Include\objbase.hファイルの236行に次のように貼り付けます。 :

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

私はこれを最新のEdgeインストールで機能させるためにこの最後の部分を実行する必要がありました(Kerasの一部に必要)。

私はまた、私のために働いたもののリストをここに書きました: http://acoupleofrobots.com/everything/?p=2238 これは64ビットバージョン用です。

0
Ilya Raykhel

Mattのチュートリアルに従って、nvccの問題に遭遇しました。 nvcc.profileにVS2010実行可能ファイルへのパスを追加する必要がありました(それはcuda binフォルダーにあります):

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

0
super-truite