Windowsに正式対応していないchainerをwindowsで動かす際のエラーについてメモします。
環境
- Windows 10 64bit
- cuda 8.0 (cudnnは未導入)
- Python 3.5.1 64bit (Anaconda Pythonを利用)
- chainer 1.20.0.1
- Visual Studio Community 2015
現象
GPUを利用するchainerのコードを実行すると、以下のようにcuda絡みのエラーが出て実行に失敗しました。
File "C:\Users\(ユーザ名)\Anaconda3\lib\site-packages\chainer\initializers\normal.py", line 31, in __call__ loc=0.0, scale=self.scale, size=array.shape) File "cupy/core/core.pyx", line 1260, in cupy.core.core.ndarray.__setitem__ (cupy\core\core.cpp:24263) File "cupy/core/core.pyx", line 2336, in cupy.core.core._scatter_op (cupy\core\core.cpp:59948) File "cupy/core/core.pyx", line 1496, in cupy.core.core.elementwise_copy (cupy\core\core.cpp:51768) File "cupy/core/elementwise.pxi", line 774, in cupy.core.core.ufunc.__call__ (cupy\core\core.cpp:42682) File "cupy/util.pyx", line 37, in cupy.util.memoize.decorator.ret (cupy\util.cpp:1283) File "cupy/core/elementwise.pxi", line 582, in cupy.core.core._get_ufunc_kernel (cupy\core\core.cpp:39296) File "cupy/core/elementwise.pxi", line 32, in cupy.core.core._get_simple_elementwise_kernel (cupy\core\core.cpp:29818) File "cupy/core/carray.pxi", line 87, in cupy.core.core.compile_with_cache (cupy\core\core.cpp:29505) File "C:\Users\(ユーザ名)\Anaconda3\lib\site-packages\cupy\cuda\compiler.py", line 131, in compile_with_cache base = _empty_file_preprocess_cache[env] = preprocess('', options) File "C:\Users\(ユーザ名)\Anaconda3\lib\site-packages\cupy\cuda\compiler.py", line 94, in preprocess pp_src = _run_nvcc(cmd, root_dir) File "C:\Users\(ユーザ名)\Anaconda3\lib\site-packages\cupy\cuda\compiler.py", line 56, in _run_nvcc raise RuntimeError(msg) RuntimeError: `nvcc` command returns non-zero exit status. command: ['nvcc', '--preprocess', '-Xcompiler', '/wd 4819', '-m64', 'C:\\Users\\(ユーザ名)\\AppData\\Local\\Temp\\tmp_c64g0d4\\kern.cu'] return-code: 2 stdout/stderr: b'kern.cu\r\n#line 1 ...(中略)... #line 320 "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/../../VC/INCLUDE\\\\vcruntime.h"\r\n#line 10 "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/../../VC/INCLUDE\\\\crtdefs.h"\r\nC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/../../VC/INCLUDE\\crtdefs.h(10): fatal error C1083: include (略) \'corecrt.h\':No such file or directory\r\nnvcc warning : The \'compute_20\', \'sm_20\', and \'sm_21\' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).\r\n'
試したこと1
corecrt.h
が見つからないというエラー文をヒントに検索したところ、 Qtでcorecrt.hが見つからないと言われる問題 - あくまで個人的メモ用ブログ に「「ユニバーサルWindowsアプリ開発ツール」をインストールすることで直った」という報告が見つかりました。
しかし、残念ながら私の環境では直りませんでした。
試したこと2
「開発者コマンドプロンプト for VS2015」を起動し、このコマンドプロンプトを使ってpythonスクリプトを実行することで、上記エラーが出なくなることを確認しました。
「開発者コマンドプロンプト for VS2015」にてecho %INCLUDE%
すると、corecrt.h
を含むディレクトリであるC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt;
が登録されていることが分かります。このおかげのように思われますが、自信はありません。