windows 10 + cuda + chainer で corecrt.h が見つからない問題


このエントリーをはてなブックマークに追加

Windowsに正式対応していないchainerをwindowsで動かす際のエラーについてメモします。

環境

現象

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;が登録されていることが分かります。このおかげのように思われますが、自信はありません。