Command-line version binary

The following installation methods are supported:

Note that there are additional system requirements and peculiarities if training on GPU support is required.


An up-to-date list of available CatBoost releases and the corresponding binaries for different operating systems is available in the Download section of the releases page on GitHub.


Only CUDA 8.0 is officially supported in compiled command-line packages for Windows. Вuild the binary from a local copy if GPU support is required and the installed version of CUDA differs from 8.0. CatBoost should work fine with CUDA 8.0 and later versions.

All necessary CUDA libraries are statically linked to the Linux and macOS binaries of the CatBoost command-line version, therefore, only the installation of an appropriate version of the CUDA driver is required.

Build the binary from a local copy

The system compiler must be compatible with CUDA Toolkit if GPU support is required. For example, gcc-6 and clang-39 are compatible with CUDA Toolkit 9.* while gcc-7 is not. The required steps to change the system compiler depend on the OS.

To build the command-line package from a local copy of the CatBoost repository:
  1. Install the libc header files on macOS and Linux:
    • macOS: xcode-select --install
    • Linux: install the appropriate package (for example, libc6-dev on Ubuntu)
  2. Clone the repository:

    git clone
  3. (Optionally) Volta GPU users are advised to add the -arch=compute_60 and -code=sm_70 NVCC compile flags. These flags are set in the CUDA_NVCC_FLAGS section of the ya.make files of the catboost/cuda catalog.

    It is not recommended to use the -arch=compute_70 and -code=sm_70 flags since CatBoost can work incorrectly with Independent Thread Scheduling introduced in Volta GPUs when the number of splits for features exceeds 32.

  4. (Optionally) CUDA of compute capability 2.0 users must replace the -gencode arch=compute_30,code=compute_30 substring with -gencode arch=compute_20,code=compute_20 in all ya.make files of the cloned repository.

    For example, Linux users can run the following sed command from the root of the local copy of the CatBoost repository:
    find ./ -type f -name ya.make -exec sed -i 's/compute_30/compute_20/g' {} +
  5. Open the catboost/catboost/app catalog from the local copy of the CatBoost repository.

  6. Run the following command:

    ../../ya make -r [-DCUDA_ROOT=<path to the CUDA directory>] [-DHAVE_CUDA=no] [-o <output catalog>]
    • -DCUDA_ROOT is the path to CUDA. This is an optional parameter required to support training on GPU.
    • -DHAVE_CUDA=no disables CUDA support. This speeds up compilation.

      By default, the package is built with CUDA support if CUDA Toolkit is installed.

    • -o defines the catalog to output the compiled library to. By default, the current catalog is used.

Build the binary with make on Linux (CPU only)

To build a CPU version of the command-line package using make:

  1. Clone the repository:

    git clone
  2. Install the appropriate libc package, for example, libc6-dev on Ubuntu.

  3. Install Clang 3.9.
  4. Set the CC and CXX variables to point to the installed Clang 3.9, for example:

    export CC=/usr/bin/clang
    export CXX=/usr/bin/clang++
  5. Run the following command:

    make -f make/CLANG39-LINUX-X86_64.makefile

The binary will be created in the folder /catboost/catboost/app.

Build the binary with MPI support from a local copy (GPU only)

CatBoost provides a beta-version of multi-node GPU training. Currently only the feature parallel learning scheme is supported. Therefore, only datasets with many features gain the benefit from multi-host multi-GPU support.

To build the command-line package with MPI support from a local copy of the CatBoost repository:
  1. Install an MPI library (for example, Open MPI) on all machines that are supposed to participate in the training.

  2. Refer to the MPI library documentation for guides on running MPI jobs on several hosts.

  3. Add the following environment variables:
  4. Clone the repository:

    git clone
  5. Open the catboost/catboost/app catalog from the local copy of the CatBoost repository.

  6. Build the command-line version of CatBoost with MPI support:

    -DWITHOUT_CUDA_AWARE_MPI is required if the installed MPI library does not support CUDA-aware MPI with multiple GPU per one MPI process on a host.

Performance notes:
  • CatBoost requires one working thread per GPU, one thread for routing network messages and several threads for preprocessing data. Use an appropriate CPU binding policy. It is recommended to bind the application to full host or PCI root complex used by CUDA devices for optimal performance. See the MPI documentation for more details.
  • A fast network connection (like InfiniBand) is required to gain the benefit from multi-node support. Slow networks with network capacity of 1Gb/s or less can whittle down the advantages of multi-node training.

GPU system requirements

Devices of compute capability 3.0 and higher are supported in compiled packages.

The command-line version of CatBoost for CUDA of compute capability 2.0 can be built from source. In this case step 4 of the sequence is obligatory.

GPU peculiarities

  • Some training parameters are missing but will be added in future releases
  • Multiple train runs with the same random seed may result in different formulas because of the float summation order