compile_MacOS_en.md 11.1 KB
Newer Older
1
# **Compile on MacOS from Source Code**
2

3
## Environment preparation
4

5 6 7
* **MacOS version 10.11/10.12/10.13/10.14 (64 bit) (not support GPU version)**
* **Python version 2.7.15+/3.5.1+/3.6/3.7 (64 bit)**
* **pip or pip3 version 9.0.1+ (64 bit)**
8

9
## Choose CPU/GPU
10

11
* Currently, only PaddlePaddle for CPU is supported.
12

13 14
## Installation steps
There are two compilation methods in MacOS system:
15

16 17
* Compile with docker
* Local compilation
18

19 20
<a name="mac_docker"></a>
### ***Compile with Docker***
21

22
[Docker](https://docs.docker.com/install/) is an open source application container engine. Using docker, you can not only isolate the installation and use of paddlepaddle from the system environment, but also share GPU, network and other resources with the host
23

24
Compiling PaddlePaddle with Docker,you need:
25

26
- On the local host [Install Docker](https://hub.docker.com/search/?type=edition&offering=community)
27

28
- Log in to Docker with Docker ID to avoid `Authenticate Failed` error
29

30
Please follow the steps below to install:
31 32 33 34 35

1. Enter the terminal of the Mac

2. Please select the path where you want to store PaddlePaddle, and then use the following command to clone PaddlePaddle's source code from github to a folder named Paddle in the local current directory:

36
    `git clone https://github.com/PaddlePaddle/Paddle.git`
37 38 39

3. Go to the Paddle directory: `cd Paddle`

40
4. Create and enter a Docker container that meets the compilation environment:
41

42
    `docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
43

44
    > --name paddle-test name the Docker container you created as paddle-test, 
45

46 47 48 49 50 51 52
    > -v $PWD:/paddle mount the current directory to the /paddle directory in the Docker container (the PWD variable in Linux will expand to the current path's [Absolute path](https://baike.baidu.com/item/绝对路径/481185)), 

    > -it keeps interacting with the host, `hub.baidubce.com/paddlepaddle/paddle:latest-dev` creates a Docker container with a mirror named `hub.baidubce.com/paddlepaddle/paddle:latest-dev`, /bin /bash starts the /bin/bash command after entering the container.

5. After entering Docker, go to the paddle directory: 

	`cd paddle`
53 54 55

6. Switch to a more stable version to compile:

56 57 58 59 60 61 62
    `git checkout [name of the branch]`

    For example:

    `git checkout release/1.5`

    Note: python3.6、python3.7 version started supporting from release/1.2 branch
63 64 65

7. Create and enter the /paddle/build path:

66
    `mkdir -p /paddle/build && cd /paddle/build`
67

68
8. Use the following command to install the dependencies:
69

70 71
		For Python2: pip install protobuf==3.1.0
		For Python3: pip3.5 install protobuf==3.1.0
72

73
    Note: We used Python3.5 command as an example above, if the version of your Python is 3.6/3.7, please change Python3.5 in the commands to Python3.6/Python3.7
74

75
    > Install protobuf 3.1.0.
76

77
    `apt install patchelf`
78

79
    > Installing patchelf, PatchELF is a small and useful program for modifying the dynamic linker and RPATH of ELF executables.
80 81 82

9. Execute cmake:

83
    > For details on the compilation options, see the [compilation options table](../Tables_en.html/#Compile).
84
    > Please attention to modify parameters `-DPY_VERSION` for the version of Python you want to compile with, for example `-DPY_VERSION=3.5` means the version of python is 3.5.x
85

86
    * For users who need to compile the **CPU version PaddlePaddle**:
87

88
		`cmake .. -DPY_VERSION=3.5 -DWITH_GPU=OFF -DWITH_TESTING=OFF -DWITH_AVX=OFF -DCMAKE_BUILD_TYPE=Release`
89

90
		> We currently do not support the compilation of the GPU version PaddlePaddle under CentOS.
91 92 93

10. Execute compilation:

94
    `make -j$(nproc)`
95

96
    > Use multicore compilation
97 98 99 100 101 102

11. After compiling successfully, go to the `/paddle/build/python/dist `directory and find the generated `.whl` package: `cd /paddle/build/python/dist`

12. Install the compiled `.whl` package on the current machine or target machine: (For Python3: Please select the pip corresponding to the python version you wish to use, such as pip3.5, pip3.6)


103 104
        For Python2: pip install -U (whl package name)
        For Python3: pip3.5 install -U (whl package name)
105

106
        Note: We used Python3.5 command as an example above, if the version of your Python is 3.6/3.7, please change Python3.5 in the commands to Python3.6/Python3.7
107

108
Congratulations, now that you have successfully installed PaddlePaddle using Docker, you only need to run PaddlePaddle after entering the Docker container. For more Docker usage, please refer to the [official Docker documentation](https://docs.docker.com/).
109 110 111

> Note: In order to reduce the size, `vim` is not installed in PaddlePaddle Docker image by default. You can edit the code in the container after executing `apt-get install -y vim` in the container.

112
<a name="mac_source"></a>
113
<br/><br/>
114
### ***Local compilation***
115 116 117

**Please strictly follow the order of the following instructions**

118
1. Check that your computer and operating system meet our supported compilation standards: `uname -m` and view the system version `about this Mac`. And install [OpenCV](https://opencv.org/releases.html) in advance.
119 120 121

2. Install python and pip:

122
    > **Please do not use the Python initially given by MacOS**, we strongly recommend that you use [Homebrew](https://brew.sh/) to install python (for Python3 please use python [official download](https://www.python.org/downloads/mac-osx/) python3.5.x, python3.6.x, python3.7.x), pip and other dependencies, This will greatly reduce the difficulty of installing and compiling.
123

124 125
        For python2: brew install python@2
        For python3: Install using Python official website
126 127


128
    > Please note that when you have multiple pythons installed on your mac, make sure that the python you are using is the python you wish to use.
129 130 131

3. (Only For Python2) Set Python-related environment variables:

132
    - Use `find / -name libpython2.7.dylib` to find your current python `libpython2.7.dylib` path and use `export LD_LIBRARY_PATH=[libpython2.7.dylib path] && export DYLD_LIBRARY_PATH=[libpython2.7.dylib  to the top two directories of the directory]`
133 134 135

4. (Only For Python3) Set Python-related environment variables:

136 137 138 139
    - a. First use
            ```find `dirname $(dirname
              $(which python3))` -name "libpython3.*.dylib"```
            to find the path to Pythonlib (the first one it prompts is the dylib path for the python you need to use), then (below [python-lib-path] is replaced by finding the file path)
140

141
    - b. Set PYTHON_LIBRARIES: `export PYTHON_LIBRARY=[python-lib-path]`
142

143
    - c. Secondly use the path to find PythonInclude (usually find the above directory of [python-lib-path] as the include of the same directory, then find the path of python3.x or python2.x in the directory), then (the [python-include-path] in the following commands should be replaced by the path found here)
144

145
    - d. Set PYTHON_INCLUDE_DIR: `export PYTHON_INCLUDE_DIRS=[python-include-path]`
146

147
    - e. Set the system environment variable path: `export PATH=[python-bin-path]:$PATH` (here [python-bin-path] is the result of replacing the last two levels of [python-lib-path] with the path after /bin/)
148

149
    - f. Set the dynamic library link: `export LD_LIBRARY_PATH=[python-ld-path]` and `export DYLD_LIBRARY_PATH=[python-ld-path]` (here [python-ld-path] is the [python-bin-path]'s parent directory )
150

151
    - g. (Optional) If you are compiling PaddlePaddle on MacOS 10.14, make sure you have the [appropriate version](http://developer.apple.com/download) of Xcode installed.
152 153 154 155


5. Before **compilation**, please confirm that the relevant dependencies mentioned in the [compilation dependency table](h../Tables.html/#third_party) are installed in your environment, otherwise we strongly recommend using `Homebrew` to install related dependencies.

156
    > Under MacOS, if you have not modified or installed the dependencies mentioned in the "Compile Dependency Table", you only need to use `pip` to install `numpy`, `protobuf`, `wheel`, use `homebrew` to install `wget`, `swig`,then install `cmake`.
157

158
    - a. Here is a special description of the installation of **CMake**:
159

160
        Since we are using CMake3.4 please follow the steps below:
161

162
        1. Download the CMake image from the [official CMake website](https://cmake.org/files/v3.4/cmake-3.4.3-Darwin-x86_64.dmg) and install it.
C
Cheerego 已提交
163

164
        2. Enter `sudo "/Applications/CMake.app/Contents/bin/cmake-gui" –install` in the console
165

166
    - b. If you do not want to use the system default blas and want to use your own installed OPENBLAS please read [FAQ](../FAQ.html/#OPENBLAS)
167 168 169

6. Put the PaddlePaddle source cloned in the Paddle folder in the current directory and go to the Paddle directory:

170
    - `git clone https://github.com/PaddlePaddle/Paddle.git`
171

172
    - `cd Paddle`
173 174 175

7. Switch to a more stable release branch to compile: (Note that python 3.6, python 3.7 version are supported from the 1.2 branch)

176 177 178 179 180 181 182
    `git checkout [name of the branch]`

    For example:

    `git checkout release/1.5`

    Note: python3.6、python3.7 version started supporting from release/1.2 branch
183 184 185

8. And please create and enter a directory called build:

186
    `mkdir build && cd build`
187 188 189

9. Execute cmake:

190
    > For details on the compilation options, see the [compilation options table](../Tables.html/#Compile).
191

192
    * For users who need to compile the **CPU version PaddlePaddle**:
193 194


195
            For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
196 197
            For Python3: cmake .. -DPY_VERSION=3.5 -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS} \
            -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
198

199
    > ``-DPY_VERSION=3.5`` Please change to the Python version of the installation environment.
200 201 202

10. Compile with the following command:

203
    `make -j4`
204 205 206 207 208

11. After compiling successfully, go to the `/paddle/build/python/dist `directory and find the generated `.whl` package: `cd /paddle/build/python/dist`

12. Install the compiled `.whl` package on the current machine or target machine:

209
    `pip install -U (whl package name)` or `pip3 install -U (whl package name)`
210

211
    > If you have multiple python environments and pips installed on your computer, please see the [FAQ](../Tables.html/#MACPRO).
212 213 214 215 216 217

Congratulations, now you have completed the process of compiling PaddlePaddle using this machine.

<br/><br/>
### ***Verify installation***

218 219 220
After the installation is complete, you can use `python` or `python3` to enter the Python interpreter and then use `import paddle.fluid as fluid` and then  `fluid.install_check.run_check()` to verify that the installation was successful.

If `Your Paddle Fluid is installed succesfully!` appears, it means the installation was successful.
221 222 223 224 225 226 227

<br/><br/>
### ***How to uninstall***

Please use the following command to uninstall PaddlePaddle (users who use Docker to install PaddlePaddle should use the following command in the container containing PaddlePaddle. Please use the corresponding version of pip):

* ***CPU version of PaddlePaddle***: `pip uninstall paddlepaddle` or `pip3 uninstall paddlepaddle`
228 229

Users installing PaddlePaddle with Docker, please use above commands in the container involved PaddlePaddle and attention to use the corresponding version of Pip