mac上XGBoost多線程版本安裝[mac][high sierra]

本文最後更新於2017/12/28,看起來很多,實際安裝命令很少,多數內容在總結安裝過程中可能出現的問題。

各版本情況:

mac:10.13.2

XGBoost:0.6

gcc:7.2

關於xgboost的安裝我們可以參考官方文檔:Installation Guide但是使用mac的同學要注意,默認我們使用pip安裝的xgboost並不是多線程的,包括未安裝gcc直接從源碼編譯的也不是多線程的。下面我們介紹多線程版本的xgboost在high sierra(蘋果於2017.9.20推出)上的安裝。

1下載XGBoost源碼

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

如果不需要使用多線程版本,則運行如下命令即可完成編譯。

cd xgboost; cp make/minimum.mk ./config.mk; make -j4

2 安裝gcc

# 運行brew安裝gcc,默認是7.2(2017.12.28)
# 需要時間較長,耐心等待
brew install gcc

注意,如果看過較久之前的安裝博客發現通常在gcc後邊加上--without-multilib,字面意義感覺是不使用多線程,爲什麼會這樣?因爲gcc的multilib會和mac系統的openMP衝突,所以以前安裝gcc的時候需要制指定這個參數,不過從gcc7不需要了。如果編譯的時候讓gcc使用openMP,需要加上-fopenmp參數。

如果遇到錯誤看這裏:

  • xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun這個問題通常在mac系統一更新就出現,不侷限這裏,很多情況會觸發這個問題,使用xcode-select --install來安裝插件即可。
  • Error: /usr/local must be writable!或者提示/usr/local無權限,在high sierra之前的版本sudo chown -R $(whoami) /usr/local可以解決,但是更新後無法解決。可以嘗試兩個方法:
    • 一個是sudo chown -R $(whoami) $(brew --prefix)/*更改權限(部分人可以解決)
    • 另一個是使用這條命令重新安裝brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)",基本上都可以解決。詳細說明見這裏

3 編譯

cd xgboost
# 拷貝配置文件
cp make/minimum.mk ./config.mk;

這裏我們要使用gcc來完成編譯,雖然在上一步中我們已經下載了,但是我們並沒有使用。如果你直接使用make -4j來編譯,你會遇到-fopenmp的錯誤。因爲,mac系統本身的gcc其實是clang。可以在終端輸入gcc看提示信息或者輸入gcc -v來查看。那麼我們怎麼使用,編輯你拷貝過來的config.mk文件。將其中做如下更改:

# export CC = gcc
# export CXX = g++
# ===>
export CC = gcc-7 # 注意之前這兩行是註釋掉的,需要去掉註釋。
export CXX = g++-7

或者使用ls /usr/local/bin/*,找到gcc和g++的位置,讓CC和CXX等於絕對路徑。

然後使用make -j4編譯即可。

4 添加進python環境

# 使用如下命令添加進當前python環境
# 當前目錄在xgboost下
cd python-package
python setup.py install

5 使用多線程

你以爲安裝完了就完了,並沒有。mac版你需要手動指定nthread這個參數,使用-1並不會幫你自動選擇最優的線程數量。(2017.12.28是這個樣子)

Reference

1.http://blog.csdn.net/kamendula/article/details/53166247

2.https://stackoverflow.com/questions/36211018/clang-error-errorunsupported-option-fopenmp-on-mac-osx-el-capitan-buildin

3.https://github.com/kickstarter/laptop/pull/49

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章