From 6f0cbcaf2bb7b3823b9e5c1833e34783eabd1aea Mon Sep 17 00:00:00 2001 From: tqchen Date: Fri, 1 May 2015 11:12:43 -0700 Subject: [PATCH] add build instruction to doc --- README.md | 46 +++------------------------------------------ build.sh | 5 ++++- doc/README.md | 1 + doc/build.md | 48 +++++++++++++++++++++++++++++++++++++++++++++++ wrapper/README.md | 2 +- 5 files changed, 57 insertions(+), 45 deletions(-) create mode 100644 doc/build.md diff --git a/README.md b/README.md index 628ee3bea6ca..093d8294dcd1 100644 --- a/README.md +++ b/README.md @@ -49,50 +49,10 @@ Features - It inheritates all the optimizations made in single machine mode, maximumly utilize the resources using both multi-threading and distributed computing. Build -===== +======= * Run ```bash build.sh``` (you can also type make) -* If you have C++11 compiler, it is recommended to type ```make cxx11=1``` - - C++11 is not used by default -* If your compiler does not come with OpenMP support, it will fire an warning telling you that the code will compile into single thread mode, and you will get single thread xgboost -* You may get a error: -lgomp is not found - - You can type ```make no_omp=1```, this will get you single thread xgboost - - Alternatively, you can upgrade your compiler to compile multi-thread version -* Windows(VS 2010): see [windows](windows) folder - - In principle, you put all the cpp files in the Makefile to the project, and build -* OS X: - - For users who want OpenMP support using [Homebrew](http://brew.sh/), run ```brew update``` (ensures that you install gcc-4.9 or above) and ```brew install gcc --without-multilib```. Once it is installed, edit [Makefile](Makefile/) by replacing: - ``` - export CC = gcc - export CXX = g++ - ``` - with - ``` - export CC = gcc-4.9 - export CXX = g++-4.9 - ``` - Then run ```bash build.sh``` normally. - - - For users who want to use [High Performance Computing for Mac OS X](http://hpc.sourceforge.net/), download the GCC 4.9 binary tar ball and follow the installation guidance to install them under `/usr/local`. Then edit [Makefile](Makefile/) by replacing: - ``` - export CC = gcc - export CXX = g++ - ``` - with - ``` - export CC = /usr/local/bin/gcc - export CXX = /usr/local/bin/g++ - ``` - Then run ```bash build.sh``` normally. This solution is given by [Phil Culliton](https://www.kaggle.com/c/otto-group-product-classification-challenge/forums/t/12947/achieve-0-50776-on-the-leaderboard-in-a-minute-with-xgboost/68308#post68308). - -Build with HDFS and S3 Support -===== -* To build xgboost use with HDFS/S3 support and distributed learnig. It is recommended to build with dmlc, with the following steps - - ```git clone https://github.com/dmlc/dmlc-core``` - - Follow instruction in dmlc-core/make/config.mk to compile libdmlc.a - - In root folder of xgboost, type ```make dmlc=dmlc-core``` -* This will allow xgboost to directly load data and save model from/to hdfs and s3 - - Simply replace the filename with prefix s3:// or hdfs:// -* This xgboost that can be used for distributed learning + - Normally it gives what you want + - See [Build Instruction](doc/build.md) for more information Version ======= diff --git a/build.sh b/build.sh index a238458c4226..3a899d6d43b2 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,8 @@ # This will automatically make xgboost for MAC users who don't have OpenMP support. # In most cases, type make will give what you want. -# download rabit +# See additional instruction in doc/build.md + if make; then echo "Successfully build multi-thread xgboost" @@ -15,4 +16,6 @@ else make clean make no_omp=1 echo "Successfully build single-thread xgboost" + echo "If you want multi-threaded version" + echo "See additional instructions in doc/build.md" fi diff --git a/doc/README.md b/doc/README.md index b034db85bd56..a75d256c4da9 100644 --- a/doc/README.md +++ b/doc/README.md @@ -5,6 +5,7 @@ List of Documentations * [Learning to use xgboost by example](../demo) * [External Memory Version](external_memory.md) * [Text input format](input_format.md) +* [Build Instruction](build.md) * [Notes on the Code](../src) * List of all parameters and their usage: [Parameters](parameter.md) * Learning about the model: [Introduction to Boosted Trees](http://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf) diff --git a/doc/build.md b/doc/build.md new file mode 100644 index 000000000000..ca7f5e012041 --- /dev/null +++ b/doc/build.md @@ -0,0 +1,48 @@ +Build XGBoost +==== +* Run ```bash build.sh``` (you can also type make) +* If you have C++11 compiler, it is recommended to type ```make cxx11=1``` + - C++11 is not used by default +* If your compiler does not come with OpenMP support, it will fire an warning telling you that the code will compile into single thread mode, and you will get single thread xgboost +* You may get a error: -lgomp is not found + - You can type ```make no_omp=1```, this will get you single thread xgboost + - Alternatively, you can upgrade your compiler to compile multi-thread version +* Windows(VS 2010): see [../windows](../windows) folder + - In principle, you put all the cpp files in the Makefile to the project, and build +* OS X with multi-threading support: see [next section](#openmp-for-os-x) + +OpenMP for OS X +==== +* For users who want OpenMP support using [Homebrew](http://brew.sh/), run ```brew update``` (ensures that you install gcc-4.9 or above) and ```brew install gcc --without-multilib```. Once it is installed, edit [../Makefile](../Makefile) by replacing: + ```bash + export CC = gcc + export CXX = g++ + ``` + with + ```bash + export CC = gcc-4.9 + export CXX = g++-4.9 + ``` + Then run ```bash build.sh``` normally. + +* For users who want to use [High Performance Computing for Mac OS X](http://hpc.sourceforge.net/), download the GCC 4.9 binary tar ball and follow the installation guidance to install them under `/usr/local`. Then edit [../Makefile](../Makefile) by replacing: + ``` + export CC = gcc + export CXX = g++ + ``` + with + ``` + export CC = /usr/local/bin/gcc + export CXX = /usr/local/bin/g++ + ``` + Then run ```bash build.sh``` normally. This solution is given by [Phil Culliton](https://www.kaggle.com/c/otto-group-product-classification-challenge/forums/t/12947/achieve-0-50776-on-the-leaderboard-in-a-minute-with-xgboost/68308#post68308). + +Build with HDFS and S3 Support +===== +* To build xgboost use with HDFS/S3 support and distributed learnig. It is recommended to build with dmlc, with the following steps + - ```git clone https://github.com/dmlc/dmlc-core``` + - Follow instruction in dmlc-core/make/config.mk to compile libdmlc.a + - In root folder of xgboost, type ```make dmlc=dmlc-core``` +* This will allow xgboost to directly load data and save model from/to hdfs and s3 + - Simply replace the filename with prefix s3:// or hdfs:// +* This xgboost that can be used for distributed learning diff --git a/wrapper/README.md b/wrapper/README.md index 0a170257f274..9c0399693d33 100644 --- a/wrapper/README.md +++ b/wrapper/README.md @@ -4,7 +4,7 @@ This folder provides wrapper of xgboost to other languages Python ===== -* To make the python module, type ```make``` in the root directory of project +* To make the python module, type ```./build.sh``` in the root directory of project * Install with `python setup.py install` from this directory. * Refer also to the walk through example in [demo folder](../demo/guide-python)