Installation Guide

This is a guide for building the LightGBM Command Line Interface (CLI). If you want to build the Python-package or R-package please refer to Python-package and R-package folders respectively.

All instructions below are aimed at compiling the 64-bit version of LightGBM. It is worth compiling the 32-bit version only in very rare special cases involving environmental limitations. The 32-bit version is slow and untested, so use it at your own risk and don’t forget to adjust some of the commands below when installing.

If you need to build a static library instead of a shared one, you can add -DBUILD_STATIC_LIB=ON to CMake flags.

Users who want to perform benchmarking can make LightGBM output time costs for different internal routines by adding -DUSE_TIMETAG=ON to CMake flags.

It is possible to build LightGBM in debug mode. In this mode all compiler optimizations are disabled and LightGBM performs more checks internally. To enable debug mode you can add -DUSE_DEBUG=ON to CMake flags or choose Debug_* configuration (e.g. Debug_DLL, Debug_mpi) in Visual Studio depending on how you are building LightGBM.

You can also download the artifacts of the latest successful build on master branch (nightly builds) here: download artifacts.

Windows

On Windows LightGBM can be built using

  • Visual Studio;

  • CMake and VS Build Tools;

  • CMake and MinGW.

Visual Studio (or VS Build Tools)

With GUI

  1. Install Visual Studio (2015 or newer).

  2. Download zip archive and unzip it.

  3. Go to LightGBM-master/windows folder.

  4. Open LightGBM.sln file with Visual Studio, choose Release configuration and click BUILD -> Build Solution (Ctrl+Shift+B).

    If you have errors about Platform Toolset, go to PROJECT -> Properties -> Configuration Properties -> General and select the toolset installed on your machine.

The .exe file will be in LightGBM-master/windows/x64/Release folder.

From Command Line

  1. Install Git for Windows, CMake (3.8 or higher) and VS Build Tools (VS Build Tools is not needed if Visual Studio (2015 or newer) is already installed).

  2. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -A x64 ..
    cmake --build . --target ALL_BUILD --config Release
    

The .exe and .dll files will be in LightGBM/Release folder.

MinGW-w64

  1. Install Git for Windows, CMake and MinGW-w64.

  2. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -G "MinGW Makefiles" ..
    mingw32-make.exe -j4
    

The .exe and .dll files will be in LightGBM/ folder.

Note: You may need to run the cmake -G "MinGW Makefiles" .. one more time if you encounter the sh.exe was found in your PATH error.

It is recommended that you use Visual Studio since it has better multithreading efficiency in Windows for many-core systems (see Question 4 and Question 8).

Also, you may want to read gcc Tips.

Linux

On Linux LightGBM can be built using CMake and gcc or Clang.

  1. Install CMake.

  2. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake ..
    make -j4
    

Note: glibc >= 2.14 is required.

Also, you may want to read gcc Tips.

macOS

On macOS LightGBM can be built using CMake and Apple Clang or gcc.

Apple Clang

Only Apple Clang version 8.1 or higher is supported.

  1. Install CMake (3.16 or higher):

    brew install cmake
    
  2. Install OpenMP:

    brew install libomp
    
  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake ..
    make -j4
    

gcc

  1. Install CMake (3.2 or higher):

    brew install cmake
    
  2. Install gcc:

    brew install gcc
    
  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
    mkdir build
    cd build
    cmake ..
    make -j4
    

Also, you may want to read gcc Tips.

Docker

Refer to Docker folder.

Build MPI Version

The default build version of LightGBM is based on socket. LightGBM also supports MPI. MPI is a high performance communication approach with RDMA support.

If you need to run a distributed learning application with high performance communication, you can build the LightGBM with MPI support.

Windows

On Windows an MPI version of LightGBM can be built using

  • MS MPI and Visual Studio;

  • MS MPI, CMake and VS Build Tools.

With GUI

  1. You need to install MS MPI first. Both msmpisdk.msi and msmpisetup.exe are needed.

  2. Install Visual Studio (2015 or newer).

  3. Download zip archive and unzip it.

  4. Go to LightGBM-master/windows folder.

  5. Open LightGBM.sln file with Visual Studio, choose Release_mpi configuration and click BUILD -> Build Solution (Ctrl+Shift+B).

    If you have errors about Platform Toolset, go to PROJECT -> Properties -> Configuration Properties -> General and select the toolset installed on your machine.

The .exe file will be in LightGBM-master/windows/x64/Release_mpi folder.

From Command Line

  1. You need to install MS MPI first. Both msmpisdk.msi and msmpisetup.exe are needed.

  2. Install Git for Windows, CMake (3.8 or higher) and VS Build Tools (VS Build Tools is not needed if Visual Studio (2015 or newer) is already installed).

  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -A x64 -DUSE_MPI=ON ..
    cmake --build . --target ALL_BUILD --config Release
    

The .exe and .dll files will be in LightGBM/Release folder.

Note: Building MPI version by MinGW is not supported due to the miss of MPI library in it.

Linux

On Linux an MPI version of LightGBM can be built using Open MPI, CMake and gcc or Clang.

  1. Install Open MPI.

  2. Install CMake.

  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -DUSE_MPI=ON ..
    make -j4
    

Note: glibc >= 2.14 is required.

macOS

On macOS an MPI version of LightGBM can be built using Open MPI, CMake and Apple Clang or gcc.

Apple Clang

Only Apple Clang version 8.1 or higher is supported.

  1. Install CMake (3.16 or higher):

    brew install cmake
    
  2. Install OpenMP:

    brew install libomp
    
  3. Install Open MPI:

    brew install open-mpi
    
  4. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -DUSE_MPI=ON ..
    make -j4
    

gcc

  1. Install CMake (3.2 or higher):

    brew install cmake
    
  2. Install gcc:

    brew install gcc
    
  3. Install Open MPI:

    brew install open-mpi
    
  4. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
    mkdir build
    cd build
    cmake -DUSE_MPI=ON ..
    make -j4
    

Build GPU Version

Linux

On Linux a GPU version of LightGBM (device_type=gpu) can be built using OpenCL, Boost, CMake and gcc or Clang.

The following dependencies should be installed before compilation:

  • OpenCL 1.2 headers and libraries, which is usually provided by GPU manufacture.

    The generic OpenCL ICD packages (for example, Debian package ocl-icd-libopencl1 and ocl-icd-opencl-dev) can also be used.

  • libboost 1.56 or later (1.61 or later is recommended).

    We use Boost.Compute as the interface to GPU, which is part of the Boost library since version 1.61. However, since we include the source code of Boost.Compute as a submodule, we only require the host has Boost 1.56 or later installed. We also use Boost.Align for memory allocation. Boost.Compute requires Boost.System and Boost.Filesystem to store offline kernel cache.

    The following Debian packages should provide necessary Boost libraries: libboost-dev, libboost-system-dev, libboost-filesystem-dev.

  • CMake 3.2 or later.

To build LightGBM GPU version, run the following commands:

git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake -DUSE_GPU=1 ..
# if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
# cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
make -j4

Windows

On Windows a GPU version of LightGBM (device_type=gpu) can be built using OpenCL, Boost, CMake and VS Build Tools or MinGW.

If you use MinGW, the build procedure is similar to the build on Linux. Refer to GPU Windows Compilation to get more details.

Following procedure is for the MSVC (Microsoft Visual C++) build.

  1. Install Git for Windows, CMake (3.8 or higher) and VS Build Tools (VS Build Tools is not needed if Visual Studio (2015 or newer) is installed).

  2. Install OpenCL for Windows. The installation depends on the brand (NVIDIA, AMD, Intel) of your GPU card.

    Further reading and correspondence table: GPU SDK Correspondence and Device Targeting Table.

  3. Install Boost Binaries.

    Note: Match your Visual C++ version:

    Visual Studio 2015 -> msvc-14.0-64.exe,

    Visual Studio 2017 -> msvc-14.1-64.exe,

    Visual Studio 2019 -> msvc-14.2-64.exe.

  4. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 ..
    # if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
    # cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" ..
    cmake --build . --target ALL_BUILD --config Release
    

    Note: C:/local/boost_1_63_0 and C:/local/boost_1_63_0/lib64-msvc-14.0 are locations of your Boost binaries (assuming you’ve downloaded 1.63.0 version for Visual Studio 2015).

Docker

Refer to GPU Docker folder.

Build CUDA Version (Experimental)

The original GPU build of LightGBM (device_type=gpu) is based on OpenCL.

The CUDA-based build (device_type=cuda) is a separate implementation and requires an NVIDIA graphics card with compute capability 6.0 and higher. It should be considered experimental, and we suggest using it only when it is impossible to use OpenCL version (for example, on IBM POWER microprocessors).

Note: only Linux is supported, other operating systems are not supported yet.

Linux

On Linux a CUDA version of LightGBM can be built using CUDA, CMake and gcc or Clang.

The following dependencies should be installed before compilation:

  • CUDA 9.0 or later libraries. Please refer to this detailed guide. Pay great attention to the minimum required versions of host compilers listed in the table from that guide and use only recommended versions of compilers.

  • CMake 3.16 or later.

To build LightGBM CUDA version, run the following commands:

git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake -DUSE_CUDA=1 ..
make -j4

Build HDFS Version

The HDFS version of LightGBM was tested on CDH-5.14.4 cluster.

Linux

On Linux a HDFS version of LightGBM can be built using CMake and gcc.

  1. Install CMake.

  2. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -DUSE_HDFS=ON ..
    # if you have installed HDFS to a customized location, you should specify paths to HDFS headers (hdfs.h) and library (libhdfs.so) like the following:
    # cmake \
    #   -DUSE_HDFS=ON \
    #   -DHDFS_LIB="/opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/lib64/libhdfs.so" \
    #   -DHDFS_INCLUDE_DIR="/opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/include/" \
    #   ..
    make -j4
    

Build Java Wrapper

Using the following instructions you can generate a JAR file containing the LightGBM C API wrapped by SWIG.

Windows

On Windows a Java wrapper of LightGBM can be built using Java, SWIG, CMake and VS Build Tools or MinGW.

VS Build Tools

  1. Install Git for Windows, CMake (3.8 or higher) and VS Build Tools (VS Build Tools is not needed if Visual Studio (2015 or newer) is already installed).

  2. Install SWIG and Java (also make sure that JAVA_HOME is set properly).

  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -A x64 -DUSE_SWIG=ON ..
    cmake --build . --target ALL_BUILD --config Release
    

The .jar file will be in LightGBM/build folder and the .dll files will be in LightGBM/Release folder.

MinGW-w64

  1. Install Git for Windows, CMake and MinGW-w64.

  2. Install SWIG and Java (also make sure that JAVA_HOME is set properly).

  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -G "MinGW Makefiles" -DUSE_SWIG=ON ..
    mingw32-make.exe -j4
    

The .jar file will be in LightGBM/build folder and the .dll files will be in LightGBM/ folder.

Note: You may need to run the cmake -G "MinGW Makefiles" -DUSE_SWIG=ON .. one more time if you encounter the sh.exe was found in your PATH error.

It is recommended to use VS Build Tools (Visual Studio) since it has better multithreading efficiency in Windows for many-core systems (see Question 4 and Question 8).

Also, you may want to read gcc Tips.

Linux

On Linux a Java wrapper of LightGBM can be built using Java, SWIG, CMake and gcc or Clang.

  1. Install CMake, SWIG and Java (also make sure that JAVA_HOME is set properly).

  2. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -DUSE_SWIG=ON ..
    make -j4
    

macOS

On macOS a Java wrapper of LightGBM can be built using Java, SWIG, CMake and Apple Clang or gcc.

First, install SWIG and Java (also make sure that JAVA_HOME is set properly). Then, either follow the Apple Clang or gcc installation instructions below.

Apple Clang

Only Apple Clang version 8.1 or higher is supported.

  1. Install CMake (3.16 or higher):

    brew install cmake
    
  2. Install OpenMP:

    brew install libomp
    
  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    mkdir build
    cd build
    cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
    make -j4
    

gcc

  1. Install CMake (3.2 or higher):

    brew install cmake
    
  2. Install gcc:

    brew install gcc
    
  3. Run the following commands:

    git clone --recursive https://github.com/microsoft/LightGBM
    cd LightGBM
    export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
    mkdir build
    cd build
    cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
    make -j4
    

Also, you may want to read gcc Tips.