WindowsでChainer（Cuda＋Cupy）をインストールしようとしたらハマったのでメモ

単純にディープラーニングの本を買ってそのコードを試したかっただけなのですが、
何故か休み休みでインストールで2日もかかってしまったので、
0からMNISTが動くまでにやったことをメモついでに共有します。
ちなみにハマったのは4のfastrlockの部分だけなので3でこけなかったら読み飛ばしてください。
それ以外はごくごく普通のインストール手順です。

#1.Pythonのインストール

Anaconda経由でインストール。
Anaconda経由だとPython本体のみでなく計算ライブラリとか一括でインストールしてくれるらしい。
URL：https://www.anaconda.com/download/
3.6の最新版でOK。

#2.Cudaのインストール
NvidiaのサイトからCudaをインストール。
Legacy Releaseから9.1を選んでダウンロード。
（後述のCupyにCuda9.2に対応したバージョンがないため）
URL：https://developer.nvidia.com/cuda-downloads
![スクリーンショット 2018-06-17 15.09.53.png](https://qiita-image-store.s3.amazonaws.com/0/88547/57213940-d529-dd1c-ec96-c5c4b5609219.png)

#3.Cupyのインストール
コマンドプロンプトを管理者権限で立ち上げ。
![スクリーンショット 2018-06-17 15.14.03.png](https://qiita-image-store.s3.amazonaws.com/0/88547/083a2084-9f7d-bd86-ccfd-eb2ef8f2221f.png)


`pip install cupy-cuda91`　を実行。

多分 `fastrlock・・・`というエラーが出るので出たら4へ。
出なかったら5まで手順を飛ばす。（おめでとう！君はインストールでハマらなかった！）

#4. fastrlockのインストール
##4-1. fastrlockのソースからインストール
インストールにミスったらソースを落として
setup.pyからインストールするとうまくいくことがあるらしいので、
URLからfastrlockのtar.gzをダウンロード。
URL:https://pypi.org/project/fastrlock/#files
![スクリーンショット 2018-06-17 15.19.26.png](https://qiita-image-store.s3.amazonaws.com/0/88547/8b78473e-f5db-3118-7a82-3ea967618bb1.png)

解凍して、コマンドスクリプトで解凍したフォルダに移動。
`python setup.py install`を実行。
多分`error: Unable to find vcvarsall.bat`と出るので次へ。

##4-2. Visual Studio 2015 Community Editionをインストール
原因はPythonをコンパイルしたバージョンのVisual Studioが入っていないかららしい。
（Visual C++ 2015 Build Toolsでも行けるらしいが私はVisual Studioを入れたので）

Microsoftのページからダウンロードできなくなっているのでここからダウンロード。
URL：https://download.cnet.com/Visual-Studio-Community-2015/3000-2212_4-76440611.html

Common Tools for Visual C++ 2015にチェックを入れてインストール。
（デフォルトでは入っていないので注意）
![スクリーンショット 2018-06-17 15.36.40.png](https://qiita-image-store.s3.amazonaws.com/0/88547/43dceb6b-cbb8-9c41-b512-932f7500de1b.png)

下記を環境変数のPathに追加。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

コマンドプロンプトを再度立ち上げ`python setup.py install`を実行。
rc.exeとかlink.exeとかというエラーが出るので次へ。


##4-3. Windows 10 SDKをインストール
どうやらVS2015がフォルダをバージョン別に分けてしまってrc.exeを見つけられなくなっているらしい。
Windows Kitsというフォルダから持ってくればいいらしいが、8.1しか入っていないので10用のSDKをインストールする。

URL：https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk

インストール後、
`C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64`（細かいバージョンは違うかも）から
`rc.exe`と`rcdll.dll`をコピー。

`C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64`へペースト。

`python setup.py install`を実行でようやくfastrlockがインストール出来る（はず）。

`pip install cupy-cuda91`　を再度実行し、cupyのインストール完了。

#5. Chainerのインストール
`pip install chainer`でchainer本体をインストール。

#6.CuDNNのインストール
nVidiaに登録してCuDNNをダウンロード。
URL:https://developer.nvidia.com/rdp/cudnn-download

解凍したcudaフォルダの中身,bin,include,libフォルダを、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1
に上書き。

#7.MNISTの実行
`python`
`import chainer`
`chainer.__version__`
と実行して、chainerのバージョンを確認。
![スクリーンショット 2018-06-17 15.59.54.png](https://qiita-image-store.s3.amazonaws.com/0/88547/81d3de0c-1502-f461-2f3d-d08f8cde8fb9.png)

リリースから対応バージョンのソースをダウンロード。
URL：https://github.com/chainer/chainer/releases

![スクリーンショット 2018-06-17 16.01.42.png](https://qiita-image-store.s3.amazonaws.com/0/88547/02cdb331-0964-545f-26df-01ad976dd3ab.png)

どこかに解凍して`chainer-4.1.0\examples\mnist`に移動。

`python train_mnist.py -g 0`を実行。

エラーが起こらなければインストール成功！
![スクリーンショット 2018-06-17 16.08.47.png](https://qiita-image-store.s3.amazonaws.com/0/88547/d20405fe-f372-4b67-191f-a5d39be9a1bf.png)


#以上
思ったよりハマったのでまとめてみました。
誰かのお役に立てれば幸いです。