build_from_source_en.md 5.4 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
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. **Python Dependencies(optional)**
Z
zhangjinchao01 已提交
66
  
L
liaogang 已提交
67
    To compile PaddlePaddle with python predict API, set `-DWITH_SWIG_PY=ON` as follows:
Z
zhangjinchao01 已提交
68

L
liaogang 已提交
69 70 71 72
    ```bash
    # active swig in cmake
    cmake .. -DWITH_SWIG_PY=ON
    ```
Z
zhangjinchao01 已提交
73

L
liaogang 已提交
74
2. **Doc Dependencies(optional)**
Z
zhangjinchao01 已提交
75

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

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

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

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

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

L
liaogang 已提交
93
### Install Dependencies
Z
zhangjinchao01 已提交
94

L
liaogang 已提交
95
- **CPU Dependencies**
Z
zhangjinchao01 已提交
96

L
liaogang 已提交
97 98 99
    ```bash
    # necessary
    sudo apt-get update
L
liaogang 已提交
100 101 102
    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 已提交
103 104 105
    ```
  
- **GPU Dependencies (optional)**
Z
zhangjinchao01 已提交
106

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

L
liaogang 已提交
109 110 111 112
        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 已提交
113

L
liaogang 已提交
114 115 116 117 118
    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 已提交
119

L
liaogang 已提交
120 121 122 123
    ```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*
    ```
124
    Then you need to set LD\_LIBRARY\_PATH, PATH environment variables in ~/.bashrc.
L
liaogang 已提交
125 126 127 128 129 130 131 132 133

    ```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 已提交
134 135

```bash
L
liaogang 已提交
136
mkdir build && cd build
L
liaogang 已提交
137
``` 
L
liaogang 已提交
138

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

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