LoginSignup
5
9

More than 5 years have passed since last update.

Windows 10 + Visual Studio 2017 previewの環境でのpip経由のChainerインストール(with GPU)

Last updated at Posted at 2017-05-28

タイトルの環境でpipでchainer(でGPUを使うためのcupy)をインストールしようとすると,fatal error C1083とかInclude files not found: ['cudnn.h']とか,Check your CFLAGS environment variableとか,モジュールとビルドターゲットのアーキテクチャが競合しています(リンカ ツール エラー LNK1112)とか,識別子が見つかりませんでしたとか,Cannot Determine the location of the VS common tools folderとか,さまざまなエラーメッセージに見舞われた.
こんな環境を使っていて且つこんなところでハマる人が他にいるのかわからないが解決したのでまとめておく.

環境など

  • Windows 10 Creators Update (バージョン1703 OSビルド15063.296) x64
  • Anaconda3 4.3.1
  • Visual Studio Community 2017 Preview version 15.3 (26510.0-Preview) と Previewじゃない方の共存
  • CUDA Tool kit 8.0
  • cuDNN 5.1 (6はpipに対応していないので)
  • GPU: NVIDIA GeForce GTX 960M

手順

以下,VSやCUDAなどは入っている前提.

VSのコンポーネント選択

(選択していなかった場合のみ)Visual Studio Installer で変更をクリックし,

  • .Net デスクトップ開発

個別のコンポーネントで

  • デスクトップC++ x86およびx64用 Windows 10 SDK
  • VC++ 2015.3 v140 ツールセット

を選択しインストール.

vcvarsall.bat などの編集

vcvarsall.bat

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
の10行目をコメントアウトする.

REM if not exist "%~dp0..\common7\IDE\wdexpress.exe" goto setup_buildsku

元のファイルをvcvarsall.bat.oldなどとリネームしておいてから編集し,vcvarsall.batとして別名で保存するとよいだろう.

vcvars64.bat

vcvarsall.batと同様にして
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\bin\amd64\vcvars64.bat

11-14行目をコメントアウト

::@call :GetVSCommonToolsDir
::@if "%VS140COMNTOOLS%"=="" goto error_no_VS140COMNTOOLSDIR

::@call "%VS140COMNTOOLS%VCVarsQueryRegistry.bat" No32bit 64bit %1 %2

先頭に以下を追加

@SET VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\
@SET VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\
@SET FrameworkDir64=c:\Windows\Microsoft.NET\Framework64\
@SET FrameworkVersion64=v4.0.30319
@SET Framework40Version=v4.0

システム環境変数の設定

以下それぞれないものがあれば追加または作成する.

  • Path

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64


  • INCLUDE

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared


  • LIB

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\ucrt\x64
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\lib

condaで環境を作る

Python 3.6にはまだ諸々対応してないっぽいので3.5の環境を作ってそこでchainerを使うことにする.
コマンドプロンプト(管理者として実行)で

conda create -n chainer python=3.5
activate chainer

numpyなどを入れる

http://www.lfd.uci.edu/~gohlke/pythonlibs/
から探して入れると何かと都合がいい気がする.
筆者は numpy‑1.12.1+mkl‑cp35‑cp35m‑win_amd64.whl をダウンロードして
pip install "numpy‑1.12.1+mkl‑cp35‑cp35m‑win_amd64.whl"
とした.
matplotlibやscipyもこのサイトにあるものを入れておくとよいだろう.

chainerのインストール

まずCuPyからインストールした.

pip install cupy
pip install chainer

そして https://github.com/pfnet/chainer をクローンして examples\mnist\train_mnist.py で試してみる.
python train_mnist.py -g 0
すると動いた...!
筆者の環境だとCPUのみのときと比べて6倍ぐらい速くなった(そんだけかよ).

最後に

よくわからないでいじってたし記憶も曖昧で,上記で過不足ないか・安全かどうかはわからないのでコメント下さい.










参考

http://hurikake.hatenadiary.jp/entry/2016/09/26/232246
https://devtalk.nvidia.com/default/topic/969047/cuda-8-vs2015-corecrt-h-error/
https://developercommunity.visualstudio.com/content/problem/22031/unusable-vc-build-tools-2015-installed-with-vs2017.html
https://stackoverflow.com/questions/3461275/vs2010-command-prompt-gives-error-cannot-determine-the-location-of-the-vs-comm

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9