---
# System prepended metadata

title: 在Windows作業系統的R軟體安裝XGboost套件GPU版本

---

# 在Windows作業系統的R軟體安裝XGboost套件GPU版本
2018/08/08
指導教授: 中山大學財管系 王昭文 教授
文章撰寫: 中山大學財管系 蘇彥庭 研究助理
感謝中山大學財管系 蘇柏文同學提供電腦環境協助測試

### 前言

本篇主要講解如何在Windows作業系統的R軟體上，安裝XGboost套件GPU版本，主要參考的文章為XGboost官網的[安裝指南](https://xgboost.readthedocs.io/en/latest/build.html)說明。

---

### 安裝環境及設定

1. 顯示卡需為Nvidia，並安裝[Cuda](https://developer.nvidia.com/cuda-downloads)，版本要8.0以上。

2. 安裝[Rtools](https://cran.r-project.org/bin/windows/Rtools/index.html)，依R的版本對應安裝，並在系統PATH下添加3個路徑：
* C:\Rtools\bin
* C:\Rtools\mingw_64\bin
* C:\Rtools\mingw_32\bin
* 注意: mingw_64排序一定要比mingw_32優先。

3. 安裝[Visual Studio 2015](https://visualstudio.microsoft.com/zh-hant/vs/older-downloads/)，要記得勾選安裝C++編譯器 (`Visual C++`) 。

4. 安裝[Windows SDK version 8.1](https://developer.microsoft.com/zh-tw/windows/downloads/sdk-archive)及[Windows SDK version 10](https://developer.microsoft.com/zh-tw/windows/downloads/sdk-archive)。

5. 安裝[Cmake](https://cmake.org/download/)，最新的安裝版本(Windows win64-x64 Installer)，安裝時記得勾選選項將Cmake加入到系統PATH。

6. 安裝[git](https://git-scm.com/download/win)。

7. 在R中安裝devtools套件(R程式碼：`install.packages("devtools")`)。

---

### 安裝步驟

1. 透過git下載XGboost套件，開啟Windoes命令提示字元(cmd)，**依序**輸入下列指令：

```
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git submodule init
git submodule update
```

2. 安裝XGboost CPU版本，開啟R軟體，執行下列程式碼進行安裝。

```
setwd('[存放剛下載XGboost套件的資料夾位置]/xgboost/R-package/')
install.packages('.', repos = NULL, type="source")
```

* 備註：存放剛下載XGboost套件的資料夾位置，通常會是 `C:/Users/[使用者名稱]/xgboost/R-package/`


3. 安裝XGboost GPU版本

```
cd C:/Users/[使用者名稱]/xgboost
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DUSE_CUDA=ON -DR_LIB=ON -DLIBR_EXECUTABLE="C:/Program Files/R/R-3.5.0/bin/x64/R.exe"
```
要注意的地方是: cmake指令的`DLIBR_EXECUTABLE`參數，後面接的是R軟體的位置，需要依照實際安裝版本進行調整。

在執行cmake指令完畢後，命令提示字元畫面呈現的倒數三行應為:

```
-- Configuring done
-- Generating done
-- Build files have been written to: [存放下載XGboost套件的資料夾位置]/xgboost/build
```

若沒有出現上面三行，跑出error字眼，代表可能有部分軟體沒裝到或設定沒處理好，需要重新檢查。

若有錯誤，可至`[存放下載XGboost套件的資料夾位置]\xgboost\build\CMakeFiles\CMakeError.txt`，檢查錯誤來源。在`CMakeError.txt`，可能發生的錯誤有:

*  找不到: "CL.exe"。系統找不到指定的檔案

    這個問題代表電腦沒有安裝到C++編譯器，需要執行Visual Studio 2015安裝檔案進行安裝。

* 無法執行 'rc.exe'

    這個問題的解決方式是至`C:\Program Files (x86)\Windows Kits\8.1\bin\x64`，將rc.exe及rcdll.dll檔案複製到`C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin`路徑底下，即可解決此問題。
    
* 錯誤訊息顯示:`Do you have Rtools installed with its MinGW's bin/ in PATH?`

    未將下列3個路徑加入至系統PATH
    * C:\Rtools\bin
    * C:\Rtools\mingw_64\bin
    * C:\Rtools\mingw_32\bin


若上述設定皆沒問題，就可以繼續執行以下指令，開始編譯XGboost GPU版本。

```
cmake --build . --target install --config Release
```

編譯的過程需要花費一段時間(大約10至20分鐘)，結束後命令提示字元畫面會有警告和錯誤數量。警告數量不用理會，但若有錯誤數量，代表編譯失敗，需要回頭去檢查是否有軟體沒安裝到或設定沒處理好。

---

### 實際測試

測試GPU速度的代碼參考[XGboost官網](https://github.com/dmlc/xgboost/blob/master/R-package/demo/gpu_accelerated.R)：

以上述代碼進行測試，GPU為Nvidia GTX 1080 Ti大概比CPU快約2.6倍左右。




