Skip to content

Commit 322d69f

Browse files
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into nvprof
2 parents 6cf2dcb + 9de8ce1 commit 322d69f

File tree

70 files changed

+1872
-1751
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1872
-1751
lines changed

doc/getstarted/basic_usage/index_cn.rst

Lines changed: 0 additions & 108 deletions
This file was deleted.

doc/getstarted/basic_usage/index_en.rst

Lines changed: 0 additions & 101 deletions
This file was deleted.
-43.4 KB
Binary file not shown.
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
从源码编译PaddlePaddle
2+
======================
3+
4+
.. _build_step:
5+
6+
编译方法
7+
----------------
8+
9+
PaddlePaddle主要使用 `CMake <https://cmake.org>`_ 以及GCC, G++作为编译工具。
10+
我们推荐您使用PaddlePaddle编译环境镜像完成编译,这样可以免去单独安装编译依赖的步骤,可选的不同编译环境
11+
可以在 `这里 <https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/>`_ 找到。
12+
编译PaddlePaddle,需要执行:
13+
14+
.. code-block:: bash
15+
16+
git clone https://github.com/PaddlePaddle/Paddle.git
17+
cd Paddle
18+
# 如果使用Docker编译环境,执行下面的命令编译CPU-Only的二进制
19+
docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh
20+
# 如果不使用Docker编译环境,执行下面的命令
21+
mkdir build
22+
cd build
23+
cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF ..
24+
make
25+
26+
27+
编译完成后会在build/python/dist目录下生成输出的whl包,可以选在在当前机器安装也可以拷贝到目标机器安装:
28+
29+
.. code-block:: bash
30+
31+
pip install python/dist/*.whl
32+
33+
34+
.. _build_step:
35+
36+
编译依赖
37+
----------------
38+
39+
PaddlePaddle编译需要使用到下面的依赖(包含但不限于),其他的依赖软件,会自动在编译时下载。
40+
41+
.. csv-table:: PaddlePaddle编译依赖
42+
:header: "依赖", "版本", "说明"
43+
:widths: 10, 15, 30
44+
45+
"CMake", ">=3.5", ""
46+
"GCC", "4.8.2", "推荐使用CentOS的devtools2"
47+
"Python", "2.7.x", "依赖libpython2.7.so"
48+
"pip", ">=9.0", ""
49+
"numpy", "", ""
50+
"SWIG", ">=2.0", ""
51+
"Go", ">=1.8", "可选"
52+
53+
54+
.. _build_options:
55+
56+
编译选项
57+
----------------
58+
59+
PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。
60+
用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考
61+
`官方文档 <https://cmake.org/cmake-tutorial>`_ 。
62+
63+
在cmake的命令行中,通过使用 ``-D`` 命令设置该类编译选项,例如:
64+
65+
.. code-block:: bash
66+
67+
cmake .. -DWITH_GPU=OFF
68+
69+
.. csv-table:: 编译选项说明
70+
:header: "选项", "说明", "默认值"
71+
:widths: 1, 7, 2
72+
73+
"WITH_GPU", "是否支持GPU", "ON"
74+
"WITH_C_API", "是否仅编译CAPI", "OFF"
75+
"WITH_DOUBLE", "是否使用双精度浮点数", "OFF"
76+
"WITH_DSO", "是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。", "ON"
77+
"WITH_AVX", "是否编译含有AVX指令集的PaddlePaddle二进制文件", "ON"
78+
"WITH_PYTHON", "是否内嵌PYTHON解释器", "ON"
79+
"WITH_STYLE_CHECK", "是否编译时进行代码风格检查", "ON"
80+
"WITH_TESTING", "是否开启单元测试", "ON"
81+
"WITH_DOC", "是否编译中英文文档", "OFF"
82+
"WITH_SWIG_PY", "是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练", "Auto"
83+
"WITH_GOLANG", "是否编译go语言的可容错parameter server", "ON"
84+
"WITH_MKL", "是否使用MKL数学库,如果为否则是用OpenBLAS", "ON"
85+
86+
BLAS
87+
+++++
88+
89+
PaddlePaddle支持 `MKL <https://software.intel.com/en-us/intel-mkl>`_ 和
90+
`OpenBlAS <http://www.openblas.net/>`_ 两种BLAS库。默认使用MKL。如果使用MKL并且机器含有AVX2指令集,
91+
还会下载MKL-DNN数学库,详细参考 `这里 <https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/mkldnn#cmake>`_ 。
92+
93+
如果关闭MKL,则会使用OpenBLAS作为BLAS库。
94+
95+
CUDA/cuDNN
96+
+++++++++++
97+
98+
PaddlePaddle在编译时/运行时会自动找到系统中安装的CUDA和cuDNN库进行编译和执行。
99+
使用参数 :code:`-DCUDA_ARCH_NAME=Auto` 可以指定开启自动检测SM架构,加速编译。
100+
101+
PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cuDNN是同一个版本。
102+
我们推荐使用最新版本的cuDNN。
103+
104+
编译选项的设置
105+
++++++++++++++
106+
107+
PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。cmake编译时,首先在系统路径( :code:`/usr/lib:/usr/local/lib` )中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如
108+
109+
.. code-block:: bash
110+
111+
cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5
112+
113+
**注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(** :code:`rm -rf` )**后,再指定。**

0 commit comments

Comments
 (0)