Installation-Guide.rst 27.1 KB
Newer Older
1
2
3
Installation Guide
==================

4
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.
5

6
7
8
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.
9

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

12
Users who want to perform benchmarking can make LightGBM output time costs for different internal routines by adding ``-DUSE_TIMETAG=ON`` to CMake flags.
Guolin Ke's avatar
Guolin Ke committed
13

14
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.
Guolin Ke's avatar
Guolin Ke committed
15

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.. _sanitizers:

In addition to the debug mode, LightGBM can be built with compiler sanitizers.
To enable them add ``-DUSE_SANITIZER=ON -DENABLED_SANITIZERS="address;leak;undefined"`` to CMake flags.
These values refer to the following supported sanitizers:

- ``address`` - AddressSanitizer (ASan);
- ``leak`` - LeakSanitizer (LSan);
- ``undefined`` - UndefinedBehaviorSanitizer (UBSan);
- ``thread`` - ThreadSanitizer (TSan).

Please note, that ThreadSanitizer cannot be used together with other sanitizers.
For more info and additional sanitizers' parameters please refer to the `following docs`_.
It is very useful to build `C++ unit tests <#build-c-unit-tests>`__ with sanitizers.

31
32
.. _nightly-builds:

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

35
36
37
38
.. contents:: **Contents**
    :depth: 1
    :local:
    :backlinks: none
39

40
41
42
Windows
~~~~~~~

43
44
45
46
On Windows LightGBM can be built using

- **Visual Studio**;

47
- **CMake** and **VS Build Tools**;
48
49

- **CMake** and **MinGW**.
50

51
52
Visual Studio (or VS Build Tools)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
53
54
55
56

With GUI
********

57
1. Install `Visual Studio`_ (2015 or newer).
58
59
60
61
62

2. Download `zip archive`_ and unzip it.

3. Go to ``LightGBM-master/windows`` folder.

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

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

67
The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release`` folder.
68
69
70
71

From Command Line
*****************

72
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).
73
74
75

2. Run the following commands:

76
   .. code:: console
77

78
     git clone --recursive https://github.com/microsoft/LightGBM
79
80
81
     cd LightGBM
     mkdir build
     cd build
82
     cmake -A x64 ..
83
84
     cmake --build . --target ALL_BUILD --config Release

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

87
88
MinGW-w64
^^^^^^^^^
89
90
91
92
93

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

2. Run the following commands:

94
   .. code:: console
95

96
     git clone --recursive https://github.com/microsoft/LightGBM
97
98
99
100
101
102
     cd LightGBM
     mkdir build
     cd build
     cmake -G "MinGW Makefiles" ..
     mingw32-make.exe -j4

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

105
**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.
106

107
It is recommended that you use **Visual Studio** since it has better multithreading efficiency in **Windows** for many-core systems
108
(see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__).
109
110

Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.
111

112
113
114
Linux
~~~~~

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

117
1. Install `CMake`_.
118

119
120
2. Run the following commands:

121
   .. code:: sh
122

123
124
125
126
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
127
128
     cmake ..
     make -j4
129
130
131

**Note**: glibc >= 2.14 is required.

132
133
**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

134
Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.
135

136
137
macOS
~~~~~
138

139
On macOS LightGBM can be installed using **Homebrew**, or can be built using **CMake** and **Apple Clang** or **gcc**.
140
141
142

Apple Clang
^^^^^^^^^^^
fanliwen's avatar
fanliwen committed
143

144
Only **Apple Clang** version 8.1 or higher is supported.
fanliwen's avatar
fanliwen committed
145

146
147
148
Install Using ``Homebrew``
**************************

149
.. code:: sh
150
151
152
153
154
155

  brew install lightgbm

Build from GitHub
*****************

156
1. Install `CMake`_ (3.16 or higher):
Nikita Titov's avatar
Nikita Titov committed
157

158
   .. code:: sh
Nikita Titov's avatar
Nikita Titov committed
159

160
     brew install cmake
fanliwen's avatar
fanliwen committed
161

162
2. Install **OpenMP**:
fanliwen's avatar
fanliwen committed
163

164
   .. code:: sh
fanliwen's avatar
fanliwen committed
165
166

     brew install libomp
167
168
169

3. Run the following commands:

170
   .. code:: sh
171

172
173
174
175
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
fanliwen's avatar
fanliwen committed
176
177
178
     cmake ..
     make -j4

179
180
gcc
^^^
181

182
1. Install `CMake`_ (3.2 or higher):
183

184
   .. code:: sh
185

186
     brew install cmake
187

188
2. Install **gcc**:
189

190
   .. code:: sh
191

192
193
194
195
     brew install gcc

3. Run the following commands:

196
   .. code:: sh
197

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

206
Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.
207

208
209
210
Docker
~~~~~~

211
Refer to `Docker folder <https://github.com/microsoft/LightGBM/tree/master/docker>`__.
212

213
214
215
216
Build Threadless Version (not Recommended)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The default build version of LightGBM is based on OpenMP.
217
You can build LightGBM without OpenMP support but it is **strongly not recommended**.
218
219
220
221

Windows
^^^^^^^

222
On Windows a version of LightGBM without OpenMP support can be built using
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249

- **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**.

5. Go to ``PROJECT`` -> ``Properties`` -> ``Configuration Properties`` -> ``C/C++`` -> ``Language`` and change the ``OpenMP Support`` property to ``No (/openmp-)``.

6. Get back to the project's main screen, then 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.

250
The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release`` folder.
251
252
253
254
255
256
257
258

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:

259
   .. code:: console
260

261
     git clone --recursive https://github.com/microsoft/LightGBM
262
263
264
     cd LightGBM
     mkdir build
     cd build
265
     cmake -A x64 -DUSE_OPENMP=OFF ..
266
267
     cmake --build . --target ALL_BUILD --config Release

268
The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder.
269
270
271
272
273
274
275
276

MinGW-w64
*********

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

2. Run the following commands:

277
   .. code:: console
278

279
     git clone --recursive https://github.com/microsoft/LightGBM
280
281
282
283
284
285
     cd LightGBM
     mkdir build
     cd build
     cmake -G "MinGW Makefiles" -DUSE_OPENMP=OFF ..
     mingw32-make.exe -j4

286
The ``.exe`` and ``.dll`` files will be in ``LightGBM/`` folder.
287
288
289
290
291
292

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

Linux
^^^^^

293
On Linux a version of LightGBM without OpenMP support can be built using **CMake** and **gcc** or **Clang**.
294
295
296
297
298

1. Install `CMake`_.

2. Run the following commands:

299
   .. code:: sh
300

301
302
303
304
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
305
306
307
308
309
310
311
312
     cmake -DUSE_OPENMP=OFF ..
     make -j4

**Note**: glibc >= 2.14 is required.

macOS
^^^^^

313
On macOS a version of LightGBM without OpenMP support can be built using **CMake** and **Apple Clang** or **gcc**.
314
315
316
317
318
319

Apple Clang
***********

Only **Apple Clang** version 8.1 or higher is supported.

320
1. Install `CMake`_ (3.16 or higher):
321

322
   .. code:: sh
323
324
325
326
327

     brew install cmake

2. Run the following commands:

328
   .. code:: sh
329

330
331
332
333
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
334
335
336
337
338
339
340
341
     cmake -DUSE_OPENMP=OFF ..
     make -j4

gcc
***

1. Install `CMake`_ (3.2 or higher):

342
   .. code:: sh
343
344
345
346
347

     brew install cmake

2. Install **gcc**:

348
   .. code:: sh
349
350
351
352
353

     brew install gcc

3. Run the following commands:

354
   .. code:: sh
355

356
357
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
358
     export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
359
360
     mkdir build
     cd build
361
362
363
     cmake -DUSE_OPENMP=OFF ..
     make -j4

364
365
366
Build MPI Version
~~~~~~~~~~~~~~~~~

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

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

Windows
^^^^^^^

375
On Windows an MPI version of LightGBM can be built using
376
377
378

- **MS MPI** and **Visual Studio**;

379
- **MS MPI**, **CMake** and **VS Build Tools**.
380

381
382
383
With GUI
********

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

386
2. Install `Visual Studio`_ (2015 or newer).
387
388
389
390
391

3. Download `zip archive`_ and unzip it.

4. Go to ``LightGBM-master/windows`` folder.

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

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

396
The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release_mpi`` folder.
397
398
399
400

From Command Line
*****************

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

403
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).
404
405
406

3. Run the following commands:

407
   .. code:: console
408

409
     git clone --recursive https://github.com/microsoft/LightGBM
410
411
412
     cd LightGBM
     mkdir build
     cd build
413
     cmake -A x64 -DUSE_MPI=ON ..
414
415
     cmake --build . --target ALL_BUILD --config Release

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

418
**Note**: Building MPI version by **MinGW** is not supported due to the miss of MPI library in it.
419
420
421
422

Linux
^^^^^

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

425
1. Install `Open MPI`_.
426

427
2. Install `CMake`_.
428

429
430
3. Run the following commands:

431
   .. code:: sh
432

433
434
435
436
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
437
438
     cmake -DUSE_MPI=ON ..
     make -j4
439
440
441

**Note**: glibc >= 2.14 is required.

442
443
**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

444
445
macOS
^^^^^
446

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

449
450
Apple Clang
***********
451

452
Only **Apple Clang** version 8.1 or higher is supported.
453

454
1. Install `CMake`_ (3.16 or higher):
455

456
   .. code:: sh
457

458
459
460
461
     brew install cmake

2. Install **OpenMP**:

462
   .. code:: sh
463
464
465
466
467

     brew install libomp

3. Install **Open MPI**:

468
   .. code:: sh
469
470
471
472
473

     brew install open-mpi

4. Run the following commands:

474
   .. code:: sh
475

476
477
478
479
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
480
481
482
483
484
485
486
487
     cmake -DUSE_MPI=ON ..
     make -j4

gcc
***

1. Install `CMake`_ (3.2 or higher):

488
   .. code:: sh
489
490
491
492
493

     brew install cmake

2. Install **gcc**:

494
   .. code:: sh
495
496
497
498
499

     brew install gcc

3. Install **Open MPI**:

500
   .. code:: sh
501
502
503
504
505

     brew install open-mpi

4. Run the following commands:

506
   .. code:: sh
507

508
509
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
510
     export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
511
512
     mkdir build
     cd build
513
514
     cmake -DUSE_MPI=ON ..
     make -j4
515
516
517
518
519
520
521

Build GPU Version
~~~~~~~~~~~~~~~~~

Linux
^^^^^

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

524
525
The following dependencies should be installed before compilation:

526
-  **OpenCL** 1.2 headers and libraries, which is usually provided by GPU manufacture.
527

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

530
-  **libboost** 1.56 or later (1.61 or later is recommended).
531
532
533
534
535

   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``.

536
-  **CMake** 3.2 or later.
537
538
539

To build LightGBM GPU version, run the following commands:

540
.. code:: sh
541

542
543
544
545
  git clone --recursive https://github.com/microsoft/LightGBM
  cd LightGBM
  mkdir build
  cd build
546
  cmake -DUSE_GPU=1 ..
547
548
  # 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/ ..
549
550
  make -j4

551
552
553
554
**Note**: glibc >= 2.14 is required.

**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

555
556
557
Windows
^^^^^^^

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

560
If you use **MinGW**, the build procedure is similar to the build on Linux. Refer to `GPU Windows Compilation <./GPU-Windows.rst>`__ to get more details.
561

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

564
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).
565
566
567
568
569

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

   - For running on Intel, get `Intel SDK for OpenCL`_.

570
   - For running on AMD, get AMD APP SDK.
571
572
573

   - For running on NVIDIA, get `CUDA Toolkit`_.

574
575
   Further reading and correspondence table: `GPU SDK Correspondence and Device Targeting Table <./GPU-Targets.rst>`__.

Nikita Titov's avatar
Nikita Titov committed
576
3. Install `Boost Binaries`_.
577

578
   **Note**: Match your Visual C++ version:
579

580
581
   Visual Studio 2015 -> ``msvc-14.0-64.exe``,

582
583
   Visual Studio 2017 -> ``msvc-14.1-64.exe``,

584
585
586
   Visual Studio 2019 -> ``msvc-14.2-64.exe``,

   Visual Studio 2022 -> ``msvc-14.3-64.exe``.
587
588
589

4. Run the following commands:

590
   .. code:: console
591

592
     git clone --recursive https://github.com/microsoft/LightGBM
593
594
595
     cd LightGBM
     mkdir build
     cd build
596
597
598
     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" ..
599
600
     cmake --build . --target ALL_BUILD --config Release

601
   **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).
602
603
604
605

Docker
^^^^^^

606
Refer to `GPU Docker folder <https://github.com/microsoft/LightGBM/tree/master/docker/gpu>`__.
607

608
609
610
Build CUDA Version (Experimental)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

611
The `original GPU build <#build-gpu-version>`__ of LightGBM (``device_type=gpu``) is based on OpenCL.
612

613
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).
614
615
616
617
618
619

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

Linux
^^^^^

620
On Linux a CUDA version of LightGBM can be built using **CUDA**, **CMake** and **gcc** or **Clang**.
621
622
623

The following dependencies should be installed before compilation:

624
-  **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.
625
626
627
628
629

-  **CMake** 3.16 or later.

To build LightGBM CUDA version, run the following commands:

630
.. code:: sh
631

632
633
634
635
  git clone --recursive https://github.com/microsoft/LightGBM
  cd LightGBM
  mkdir build
  cd build
636
637
638
  cmake -DUSE_CUDA=1 ..
  make -j4

639
640
Recently, a new CUDA version with better efficiency is implemented as an experimental feature. To build the new CUDA version, replace ``-DUSE_CUDA`` with ``-DUSE_CUDA_EXP`` in the above commands. Please note that new version requires **CUDA** 10.0 or later libraries.

641
642
643
644
**Note**: glibc >= 2.14 is required.

**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

645
646
647
Build HDFS Version
~~~~~~~~~~~~~~~~~~

648
The HDFS version of LightGBM was tested on CDH-5.14.4 cluster.
649
650
651
652

Linux
^^^^^

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

655
1. Install `CMake`_.
fanliwen's avatar
fanliwen committed
656
657
658

2. Run the following commands:

659
   .. code:: sh
fanliwen's avatar
fanliwen committed
660

661
662
663
664
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
fanliwen's avatar
fanliwen committed
665
     cmake -DUSE_HDFS=ON ..
666
667
668
669
670
671
     # 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/" \
     #   ..
fanliwen's avatar
fanliwen committed
672
673
     make -j4

674
675
676
677
**Note**: glibc >= 2.14 is required.

**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

678
679
680
Build Java Wrapper
~~~~~~~~~~~~~~~~~~

681
Using the following instructions you can generate a JAR file containing the LightGBM `C API <./Development-Guide.rst#c-api>`__ wrapped by **SWIG**.
682
683
684
685

Windows
^^^^^^^

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

688
689
VS Build Tools
**************
690

691
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).
692
693
694
695
696

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

3. Run the following commands:

697
   .. code:: console
698

699
     git clone --recursive https://github.com/microsoft/LightGBM
700
701
702
     cd LightGBM
     mkdir build
     cd build
703
     cmake -A x64 -DUSE_SWIG=ON ..
704
705
     cmake --build . --target ALL_BUILD --config Release

706
The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/Release`` folder.
707
708
709
710
711
712
713
714
715
716

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:

717
   .. code:: console
718

719
     git clone --recursive https://github.com/microsoft/LightGBM
720
721
722
723
724
725
     cd LightGBM
     mkdir build
     cd build
     cmake -G "MinGW Makefiles" -DUSE_SWIG=ON ..
     mingw32-make.exe -j4

726
The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/`` folder.
727
728
729

**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.

730
It is recommended to use **VS Build Tools (Visual Studio)** since it has better multithreading efficiency in **Windows** for many-core systems
731
732
(see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__).

733
734
Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.

735
736
737
Linux
^^^^^

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

740
1. Install `CMake`_, `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` is set properly).
741

742
2. Run the following commands:
743

744
   .. code:: sh
745

746
747
748
749
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
750
     cmake -DUSE_SWIG=ON ..
751
     make -j4
752

753
754
755
756
**Note**: glibc >= 2.14 is required.

**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this).

757
758
759
macOS
^^^^^

760
On macOS a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMake** and **Apple Clang** or **gcc**.
761
762
763
764
765
766
767
768
769

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.

770
1. Install `CMake`_ (3.16 or higher):
771

772
   .. code:: sh
773
774
775
776
777

     brew install cmake

2. Install **OpenMP**:

778
   .. code:: sh
779
780
781
782
783

     brew install libomp

3. Run the following commands:

784
   .. code:: sh
785

786
787
788
789
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
790
791
792
793
794
795
796
797
     cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
     make -j4

gcc
***

1. Install `CMake`_ (3.2 or higher):

798
   .. code:: sh
799
800
801
802
803

     brew install cmake

2. Install **gcc**:

804
   .. code:: sh
805
806
807
808
809

     brew install gcc

3. Run the following commands:

810
   .. code:: sh
811

812
813
     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
814
     export CXX=g++-7 CC=gcc-7  # replace "7" with version of gcc installed on your machine
815
816
     mkdir build
     cd build
817
818
819
820
821
     cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
     make -j4

Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.

822
823
824
825
826
827
828
829
830
831
832
833
Build C++ Unit Tests
~~~~~~~~~~~~~~~~~~~~

Windows
^^^^^^^

On Windows, C++ unit tests of LightGBM can be built using **CMake** and **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. Run the following commands:

834
   .. code:: console
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853

     git clone --recursive https://github.com/microsoft/LightGBM
     cd LightGBM
     mkdir build
     cd build
     cmake -A x64 -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
     cmake --build . --target testlightgbm --config Debug

The ``.exe`` file will be in ``LightGBM/Debug`` folder.

Linux
^^^^^

On Linux a C++ unit tests of LightGBM can be built using **CMake** and **gcc** or **Clang**.

1. Install `CMake`_.

2. Run the following commands:

854
   .. code:: sh
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876

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

**Note**: glibc >= 2.14 is required.

macOS
^^^^^

On macOS a C++ unit tests of 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):

877
   .. code:: sh
878
879
880
881
882

     brew install cmake

2. Run the following commands:

883
   .. code:: sh
884
885
886
887
888
889
890
891
892
893
894
895
896

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

gcc
***

1. Install `CMake`_ (3.2 or higher):

897
   .. code:: sh
898
899
900
901
902

     brew install cmake

2. Install **gcc**:

903
   .. code:: sh
904
905
906
907
908

     brew install gcc

3. Run the following commands:

909
   .. code:: sh
910
911
912
913
914
915
916
917
918

     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 -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
     make testlightgbm -j4

919

920
921
922
.. |download artifacts| image:: ./_static/images/artifacts-not-available.svg
   :target: https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html

923
.. _Python-package: https://github.com/microsoft/LightGBM/tree/master/python-package
924

925
.. _R-package: https://github.com/microsoft/LightGBM/tree/master/R-package
926

927
.. _zip archive: https://github.com/microsoft/LightGBM/archive/master.zip
928

929
.. _Visual Studio: https://visualstudio.microsoft.com/downloads/
930
931
932
933
934

.. _Git for Windows: https://git-scm.com/download/win

.. _CMake: https://cmake.org/

935
.. _VS Build Tools: https://visualstudio.microsoft.com/downloads/
936

937
.. _MinGW-w64: https://www.mingw-w64.org/downloads/
938
939
940
941
942

.. _MPI: https://en.wikipedia.org/wiki/Message_Passing_Interface

.. _RDMA: https://en.wikipedia.org/wiki/Remote_direct_memory_access

943
.. _MS MPI: https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi-release-notes
944
945
946
947
948
949
950

.. _Open MPI: https://www.open-mpi.org/

.. _Intel SDK for OpenCL: https://software.intel.com/en-us/articles/opencl-drivers

.. _CUDA Toolkit: https://developer.nvidia.com/cuda-downloads

951
.. _Boost Binaries: https://sourceforge.net/projects/boost/files/boost-binaries/
952
953

.. _SWIG: http://www.swig.org/download.html
954
955

.. _this detailed guide: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
956
957

.. _following docs: https://github.com/google/sanitizers/wiki