build_from_source_en.md 5.6 KB
Newer Older
L
liaogang 已提交
1
Installing from Sources
G
gangliao 已提交
2
==========================
Z
zhangjinchao01 已提交
3

L
liaogang 已提交
4 5 6
* [1. Download and Setup](#download)
* [2. Requirements](#requirements)
* [3. Build on Ubuntu](#ubuntu)
L
liaogang 已提交
7

L
liaogang 已提交
8
## <span id="download">Download and Setup</span> 
G
gangliao 已提交
9
You can download PaddlePaddle from the [github source](https://github.com/PaddlePaddle/Paddle).
Z
zhangjinchao01 已提交
10

L
liaogang 已提交
11
```bash
G
gangliao 已提交
12
git clone https://github.com/PaddlePaddle/Paddle paddle
13
cd paddle
L
liaogang 已提交
14 15
```
## <span id="requirements">Requirements</span>
Z
zhangjinchao01 已提交
16

L
liaogang 已提交
17 18 19
To compile the source code, your computer must be equipped with the following dependencies.

- **Compiler**: GCC >= 4.8 or Clang >= 3.3 (AppleClang >= 5.1)
L
liaogang 已提交
20
- **CMake**: version >= 3.0 (at least CMake 3.4 on Mac OS X)
L
liaogang 已提交
21
- **BLAS**: MKL, OpenBlas or ATLAS
Z
zhangjinchao01 已提交
22

L
liaogang 已提交
23 24 25
**Note:** For CUDA 7.0 and CUDA 7.5, GCC 5.0 and up are not supported!
For CUDA 8.0, GCC versions later than 5.3 are not supported!

L
liaogang 已提交
26
### Options
Z
zhangjinchao01 已提交
27

L
liaogang 已提交
28
PaddlePaddle supports some build options. 
Z
zhangjinchao01 已提交
29

G
gangliao 已提交
30 31 32 33 34 35 36 37 38
<html>
<table> 
<thead>
<tr>
<th scope="col" class="left">Optional</th>
<th scope="col" class="left">Description</th>
</tr>
</thead>
<tbody>
L
liaogang 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
<tr><td class="left">WITH_GPU</td><td class="left">Compile PaddlePaddle with NVIDIA GPU</td></tr>
<tr><td class="left">WITH_AVX</td><td class="left">Compile PaddlePaddle with AVX intrinsics</td></tr>
<tr><td class="left">WITH_DSO</td><td class="left">Compile PaddlePaddle with dynamic linked CUDA</td></tr>
<tr><td class="left">WITH_TESTING</td><td class="left">Compile PaddlePaddle with unit testing</td></tr>
<tr><td class="left">WITH_SWIG_PY</td><td class="left">Compile PaddlePaddle with inference api</td></tr>
<tr><td class="left">WITH_STYLE_CHECK</td><td class="left">Compile PaddlePaddle with style check</td></tr>
<tr><td class="left">WITH_PYTHON</td><td class="left">Compile PaddlePaddle with python interpreter</td></tr>
<tr><td class="left">WITH_DOUBLE</td><td class="left">Compile PaddlePaddle with double precision</td></tr>
<tr><td class="left">WITH_RDMA</td><td class="left">Compile PaddlePaddle with RDMA support</td></tr>
<tr><td class="left">WITH_TIMER</td><td class="left">Compile PaddlePaddle with stats timer</td></tr>
<tr><td class="left">WITH_PROFILER</td><td class="left">Compile PaddlePaddle with GPU profiler</td></tr>
<tr><td class="left">WITH_DOC</td><td class="left">Compile PaddlePaddle with documentation</td></tr>
<tr><td class="left">ON_COVERALLS</td><td class="left">Compile PaddlePaddle with code coverage</td></tr>
<tr><td class="left">COVERALLS_UPLOAD</td><td class="left">Package code coverage data to coveralls</td></tr>
<tr><td class="left">ON_TRAVIS</td><td class="left">Exclude special unit test on Travis CI</td></tr>
G
gangliao 已提交
54
</tbody>
G
gangliao 已提交
55
</table>
G
gangliao 已提交
56
</html>
Z
zhangjinchao01 已提交
57

L
liaogang 已提交
58
**Note:**
L
liaogang 已提交
59 60
  - The GPU version works best with Cuda Toolkit 8.0 and cuDNN v5.
  - Other versions like Cuda Toolkit 7.0, 7.5 and cuDNN v3, v4 are also supported.
L
liaogang 已提交
61
  - **To utilize cuDNN v5, Cuda Toolkit 7.5 is prerequisite and vice versa.**
Z
zhangjinchao01 已提交
62

L
liaogang 已提交
63
As a simple example, consider the following:  
Z
zhangjinchao01 已提交
64

L
liaogang 已提交
65
1. **BLAS Dependencies(optional)**
Z
zhangjinchao01 已提交
66
  
L
liaogang 已提交
67
    Paddle will find BLAS from system's default path. But you can specify MKL, OpenBLAS or ATLAS via `MKL_ROOT`, `OPENBLAS_ROOT` or `ATLAS_ROOT`.
Z
zhangjinchao01 已提交
68

L
liaogang 已提交
69
    ```bash
L
liaogang 已提交
70 71 72 73
    # specify MKL
    cmake .. -DMKL_ROOT=<mkl_path>
    # or specify OpenBLAS
    cmake .. -DOPENBLAS_ROOT=<openblas_path>
L
liaogang 已提交
74
    ```
Z
zhangjinchao01 已提交
75

L
liaogang 已提交
76
2. **Doc Dependencies(optional)**
Z
zhangjinchao01 已提交
77

L
liaogang 已提交
78
    To generate PaddlePaddle's documentation, install dependencies and set `-DWITH_DOC=ON` as follows:
Z
zhangjinchao01 已提交
79

L
liaogang 已提交
80 81
    ```bash
    pip install 'sphinx>=1.4.0'
82
    pip install sphinx_rtd_theme recommonmark
Z
zhangjinchao01 已提交
83

L
liaogang 已提交
84 85 86 87
    # install doxygen on Ubuntu
    sudo apt-get install doxygen 
    # install doxygen on Mac OS X
    brew install doxygen
Z
zhangjinchao01 已提交
88

L
liaogang 已提交
89 90 91
    # active docs in cmake
    cmake .. -DWITH_DOC=ON`
    ```
Z
zhangjinchao01 已提交
92

L
liaogang 已提交
93
## <span id="ubuntu">Build on Ubuntu 14.04</span>
Z
zhangjinchao01 已提交
94

L
liaogang 已提交
95
### Install Dependencies
Z
zhangjinchao01 已提交
96

L
liaogang 已提交
97
- **CPU Dependencies**
Z
zhangjinchao01 已提交
98

L
liaogang 已提交
99 100 101
    ```bash
    # necessary
    sudo apt-get update
L
liaogang 已提交
102 103 104
    sudo apt-get install -y g++ make cmake build-essential libatlas-base-dev python python-pip libpython-dev git
    sudo pip install wheel numpy
    sudo pip install 'protobuf>=3.0.0'
L
liaogang 已提交
105 106 107
    ```
  
- **GPU Dependencies (optional)**
Z
zhangjinchao01 已提交
108

L
liaogang 已提交
109
    To build GPU version, you will need the following installed:
Z
zhangjinchao01 已提交
110

L
liaogang 已提交
111 112 113 114
        1. a CUDA-capable GPU
        2. A supported version of Linux with a gcc compiler and toolchain
        3. NVIDIA CUDA Toolkit (available at http://developer.nvidia.com/cuda-downloads)
        4. NVIDIA cuDNN Library (availabel at https://developer.nvidia.com/cudnn)
Z
zhangjinchao01 已提交
115

L
liaogang 已提交
116 117 118 119 120
    The CUDA development environment relies on tight integration with the host development environment,
    including the host compiler and C runtime libraries, and is therefore only supported on
    distribution versions that have been qualified for this CUDA Toolkit release.
        
    After downloading cuDNN library, issue the following commands:
Z
zhangjinchao01 已提交
121

L
liaogang 已提交
122 123 124 125
    ```bash
    sudo tar -xzf cudnn-7.5-linux-x64-v5.1.tgz -C /usr/local
    sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
    ```
126
    Then you need to set LD\_LIBRARY\_PATH, PATH environment variables in ~/.bashrc.
L
liaogang 已提交
127 128 129 130 131 132 133 134 135

    ```bash
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    export PATH=/usr/local/cuda/bin:$PATH
    ```

### Build and Install

As usual, the best option is to create build folder under paddle project directory.
Z
zhangjinchao01 已提交
136 137

```bash
L
liaogang 已提交
138
mkdir build && cd build
L
liaogang 已提交
139
``` 
L
liaogang 已提交
140

L
liaogang 已提交
141
Finally, you can build and install PaddlePaddle:
Z
zhangjinchao01 已提交
142 143 144

```bash
# you can add build option here, such as:    
L
liaogang 已提交
145
cmake .. -DCMAKE_INSTALL_PREFIX=<path to install>
146
# please use sudo make install, if you want to install PaddlePaddle into the system
Z
zhangjinchao01 已提交
147
make -j `nproc` && make install
L
liaogang 已提交
148
# set PaddlePaddle installation path in ~/.bashrc
L
liaogang 已提交
149
export PATH=<path to install>/bin:$PATH
L
liaogang 已提交
150
# install PaddlePaddle Python modules.
L
liaogang 已提交
151
sudo pip install <path to install>/opt/paddle/share/wheels/*.whl
Z
zhangjinchao01 已提交
152
```