mac上XGBoost多线程版本安装 [high sierra]

本文最后更新于2017-12-28,看起来很多,实际安装命令很少,多数内容在总结安装过程中可能出现的问题。

各版本情况:

mac:10.13.2(high sierra)
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参数。

3 如果遇到错误看这里(选)

  • 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)",基本上都可以解决。详细说明见这里

4 编译

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

这里我们要使用gcc来完成编译,虽然在上一步中我们已经安装了gcc,但是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编译即可。

5 添加进python环境

# 使用如下命令添加进当前python环境
cd python-package
python setup.py install

6 使用多线程

你以为安装完了就完了,并没有。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

你可能感兴趣的:(mac上XGBoost多线程版本安装 [high sierra])