XGBoostをWindows用にビルドする(GPU対応版)

こちらのCUDA対応版でビルドする方法について。

基本はCPU版と同じで、唯一cmake .. -DUSE_CUDA=ONと、-DUSE_CUDAオプションを付けるだけ。

ビルド(全文)

git clone --recursive https://github.com/dmlc/xgboost


cd xgboost\build
cmake.exe ..\ -G"Visual Studio 14 2015 Win64" -DUSE_CUDA=ON



"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" .\xgboost.sln



dir ..\lib\xgboost.dll
copy ..\lib\xgboost.dll ..\python-package\xgboost\

ただ、はまりどころがあるので注意が必要。

そのCUDA 8はv8.0.44か

こちらにも議論されているが、2017/11/19現在、CUDA 8は8.0.61が最新であるが、これでCMakeをするとCUSTOMBUILD : nvcc error : 'cicc' died with status 0xC0000005 (ACCESS_VIOLATION)というエラーで失敗する。

つまり、CUDAをうっかりv8.0.44より高いものを入れてしまっていたらダウングレードしなければならない。
コントロールパネルのインストール済みプログラム一覧から削除してから、再度インストーラを実行する。

インストーラは1.3GBもあるので、なかなかダウンロードも時間かかる。。。

CUDA関連ソフトウェアはすべてアンインストール済みか

CUDAをデフォルトの状態でインストールするとPhysX等もついてくる。
ダウングレード時、これらもすべて削除しないと、既に高いバージョンのものがインストールされている、とエラーを出して失敗する。

しかも、アンチウィルス製品が入っていたり、アンインストール直後だったりするとアンインストーラがただしく関連ファイルを削除できず「NVIDIA アンインストーラーが失敗しました」というメッセージを出して失敗する。。。

正しくアンインストーラが現在のファイルシステムの状態を把握できていない可能性があるので、アンインストーラが失敗したらまずはOSの再起動を試した方がよい。

…この前、そもそもCUDA 9を入れてしまい、中途半端なアンインストール状態でさらにCUDA 8.0.61をインストールしてしまったので
CUDA 9のPhysXが入っているからCUDA 8.0.44は入らないわ、CUDA 9のPhysXはアンインストーラが失敗するわで手詰まり状態になった。
レジストリの修正、関連ファイルの手動削除でCUDA 9 PhysXを削除後、OSを再起動することでCUDA関連のプログラムをアンインストールできるようになり
あとはCUDA 8.0.44をインストールし、ビルドは問題なく終了した。

メモ:TensorFlowとXGBoostをインストールするなら

TensorFlowもCUDAのバージョンを指定するので、組み合わせる場合にはCUDA、CuDNNのバージョンに注意しなければならない。

TensorFlow 1.0/1.2 + XGBoost

CUDA v8.0.44 + CuDNN v5.1

TensorFlow 1.3 + XGBoost

CUDA v8.0.44 + CuDNN v6.0

CUDA 9を要求するTensorFlow 1.4は今現在XGBoost GPU版と共存できないのかな

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です