FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Microsoftの機械学習ツールキットCNTKをGPGPU付きでインストールする(Windows編)

やはりCNTKは、GPGPU付きで使いたい。そのためには、今までのようにVagrantの上で動作するLinuxで動かすより、Windows上で動作させる方が良いだろう。 Windows上にCNTKの環境をセットアップする方法について探っていこう。

1. Windows上にCNTKをインストールする手順

Windows上にCNTKをインストールするためには、まずは以下のWikiを参照するのが良い。

github.com

で、いろいろやってみた結果、結論としてはWikiに書いてあることを忠実に守る必要がありそうだ。 CUDAのバージョンも合わせないと面倒だし、Visual Studioのバージョンも合わせないと面倒だ。

2. Visual Studio 2013のインストール

ちなみに、プロジェクトファイルの関係上、Visual Studio 2013である必要がある。僕は以下からVisual Studio 2013をインストールした。 Visual Studio 2015との混在環境でも、CNTKは動作させることができるようだ。

ダウンロード | Visual Studio

3. CUDA 7.0のインストール

僕は今までCUDA7.5をインストールしていたのだが、プロジェクトと合わせるためにはCUDA7.0をインストールする必要があった。これも同様にCUDA7.5との混在環境でも問題ない。

CUDA 7.0 Downloads | NVIDIA Developer

何故こんなに厳密にバージョンを合わせないといけないかというと、CNTKのリポジトリ内に含まれるプロジェクトに、CUDAのバージョンとVisual Studioのバージョンが決め打ちで書いてあるからだ。 もちろんこれを変更しても良いのだろうけど、下手に変更してインストール出来なくなっても困るので、ちゃんと合わせるようにした。

CNTK/MathCUDA.vcxproj at master · Microsoft/CNTK · GitHub

GPU付きでビルドするためには、このMathCUDAというライブラリを構築できるかどうかがカギになる。ちなみに、後述するがエンコードの影響で、いくつかCUDAのインクルードファイルのエンコードを変更する必要がある。

4. Boost, ACML, MS-MPI, OpenCVのインストール

これらはWikiの指示通りにインストールすればOK。環境変数を設定しなければならないものはちゃんと設定すること。

Download Microsoft MPI v7 from Official Microsoft Download Center

ACML Downloads & Resources - AMD

DOWNLOADS | OpenCV

https://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/boost_1_59_0-msvc-12.0-64.exe/download

ちなみに、OpenCVは3.0.0だとLinux上でインストールに失敗したので、WindowsでもOpenCV3.1.0でインストールしている。

5. Visual Studio 2013 でCNTKのビルド

という訳で、CNTKをビルドするために、CNTKのリポジトリ内にあるCNTK.sln をVS2013で開く。

f:id:msyksphinz:20160213040929p:plain

5.1 CPU-OnlyでReleaseビルドする

このときに、

C:\Program Files (x86)\Microsoft SDKs\MPI\Include\mpi.h

エンコードを変更して、VS2013で正しく認識できるようにしてやる必要があった。ここら辺は、エラーメッセージがある度にファイルのエンコードを変えていく作業が生じた。正直面倒くさい。

5.2 ビルド完了

ビルドが終了すると、x64/Release_CpuOnlyにCNTK.exeが生成されている。

f:id:msyksphinz:20160213041544p:plain

5.3 GPU付きでReleaseビルドする

ここでも、いくつかファイルのエンコードを変更する必要がある。基本的に、CUDAのインクルードファイルのいくつかだ。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include

あたりのインクルードファイルの幾つかのエンコードを変更してVisualStudioでビルドできるようにする。この処理についても、エラーが出る度に変更していく地道な作業になる。

5.4 GPU付きでビルド終了

ビルドが終了すると、x64/ReleaseにCNTK.exeが生成される。

f:id:msyksphinz:20160213042316p:plain

これでビルド処理は完了だ。WindowsでCNTKが使えるようになった。