XGboostなどをGPU対応化

以前、実験した
https://github.com/HajimeK/machine-learning/blob/master/projects/capstone/capstone.ipynb
のXGBoost部分をGPUありで動かすための準備です。

gcc

XGBoostのコンパイルでgcc version 9以上だとだめ、と言われます。
エラーなくコンパイルできるので、そのチェックをソースコードをいじって外しました。

CMake

バージョン3.13以上を要求されます。Ubuntu 18.04LTSだとバージョン3.10がaptで入ってくるので、ソースからコンパイルします。

https://cmake.org/download/
$ cd Downloads/
$  tar -xvf cmake-3.17.3.tar.gz 
$  388  cd cmake-3.17.3/
$  ./bootstrap 
$  make
$  sudo apt remove cmake
$  sudo make install
$  sudo ln -s /usr/local/bin/cmake /usr/bin/cmake

Cuda

CUDAバージョン10以上を要求されます。
私の環境では、9台だったので、以下によりインストールしました。

CUDA Toolkit 11.1 Downloads
Select Target Platform Click on the green buttons that describe your target platform. Only supported platforms will be shown. By downloading and using the softw...

環境変数も追加します

export CUDA_HOME="/usr/local/cuda" 
export PATH="$CUDA_HOME/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" 
export CPATH="/usr/local/include:$CUDA_HOME/include:$CPATH" 
export INCLUDE_PATH="$CUDA_HOME/include"

XGBoostをビルド

CMakeCache.txtの下記の行を書き換えました。

//CUDA compiler
CMAKE_CUDA_COMPILER:FILEPATH=/usr/local/cuda/bin/nvcc

また、Cuda11でコンパイルエラー

 error: #error The version of CUB in your include path is not compatible with this release of Thrust. CUB is now included in the CUDA Toolkit, so you no longer need to use your own checkout of CUB. Define THRUST_IGNORE_CUB_VERSION_CHECK to ignore this.
 #error The version of CUB in your include path is not compatible with this release of Thrust. CUB is now included in the CUDA Toolkit, so you no longer need to use your own checkout of CUB. Define THRUST_IGNORE_CUB_VERSION_CHECK to ignore this.

が出るので、

/usr/local/cuda/targets/x86_64-linux/include/thrust/system/cuda/config.h
#define THRUST_IGNORE_CUB_VERSION_CHECK

もっとスマートなやり方がありそうです。

コメント

タイトルとURLをコピーしました