@@ -15,12 +15,12 @@ PaddlePaddle主要使用 `CMake <https://cmake.org>`_ 以及GCC, G++作为编译
15
15
16
16
git clone https://github.com/PaddlePaddle/Paddle.git
17
17
cd Paddle
18
- # 如果使用Docker编译环境,执行下面的命令
19
- docker run -it -v $PWD :/paddle -e " WITH_GPU=ON " -e " WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh
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
20
# 如果不使用Docker编译环境,执行下面的命令
21
21
mkdir build
22
22
cd build
23
- cmake -DWITH_GPU=ON -DWITH_TESTING=OFF ..
23
+ cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF ..
24
24
make
25
25
26
26
@@ -56,64 +56,57 @@ PaddlePaddle编译需要使用到下面的依赖(包含但不限于),其
56
56
编译选项
57
57
----------------
58
58
59
- PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 `官方文档 <https://cmake.org/cmake-tutorial >`_ 。
59
+ PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。
60
+ 用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考
61
+ `官方文档 <https://cmake.org/cmake-tutorial >`_ 。
60
62
61
- .. _build_options_bool :
62
-
63
- Bool型的编译选项
64
- ----------------
65
-
66
- 用户可在cmake的命令行中,通过使用 ``-D `` 命令设置该类编译选项,例如
63
+ 在cmake的命令行中,通过使用 ``-D `` 命令设置该类编译选项,例如:
67
64
68
65
.. code-block :: bash
69
66
70
67
cmake .. -DWITH_GPU=OFF
71
68
72
- .. csv-table :: Bool型的编译选项
69
+ .. csv-table :: 编译选项说明
73
70
:header: "选项", "说明", "默认值"
74
71
:widths: 1, 7, 2
75
72
76
- "WITH_GPU", "是否支持GPU。", "是"
77
- "WITH_DOUBLE", "是否使用双精度浮点数。", "否"
78
- "WITH_DSO", "是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。", "是"
79
- "WITH_AVX", "是否编译含有AVX指令集的PaddlePaddle二进制文件", "是"
80
- "WITH_PYTHON", "是否内嵌PYTHON解释器。", "是"
81
- "WITH_STYLE_CHECK", "是否编译时进行代码风格检查", "是"
82
- "WITH_TESTING", "是否开启单元测试", "是"
83
- "WITH_DOC", "是否编译中英文文档", "否"
84
- "WITH_SWIG_PY", "是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练", "自动"
85
- "WITH_GOLANG", "是否编译go语言的可容错parameter server", "是"
86
-
87
- .. _build_options_blas :
88
-
89
- BLAS/CUDA/Cudnn的编译选项
90
- --------------------------
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
+
91
86
BLAS
92
87
+++++
93
88
94
- PaddlePaddle支持以下任意一种BLAS库:`MKL <https://software.intel.com/en-us/intel-mkl >`_ ,`ATLAS <http://math-atlas.sourceforge.net/ >`_ ,`OpenBlAS <http://www.openblas.net/ >`_ 和 `REFERENCE BLAS <http://www.netlib.org/blas/ >`_ 。
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 >`_ 。
95
92
96
- .. csv-table :: BLAS路径相关的编译选项
97
- :header: "编译选项", "描述", "注意"
98
- :widths: 1, 2, 7
99
-
100
- "MKL_ROOT", "${MKL_ROOT}/include下需要包含mkl.h,${MKL_ROOT}/lib目录下需要包含mkl_core,mkl_sequential和mkl_intel_lp64三个库。"
101
- "ATLAS_ROOT", "${ATLAS_ROOT}/include下需要包含cblas.h,${ATLAS_ROOT}/lib下需要包含cblas和atlas两个库。"
102
- "OPENBLAS_ROOT", "${OPENBLAS_ROOT}/include下需要包含cblas.h,${OPENBLAS_ROOT}/lib下需要包含openblas库。"
103
- "REFERENCE_CBLAS_ROOT", "${REFERENCE_CBLAS_ROOT}/include下需要包含cblas.h,${REFERENCE_CBLAS_ROOT}/lib下需要包含cblas库。"
93
+ 如果关闭MKL,则会使用OpenBLAS作为BLAS库。
104
94
105
- CUDA/Cudnn
95
+ CUDA/cuDNN
106
96
+++++++++++
107
97
108
- PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cudnn是同一个版本。 我们推荐使用最新版本的cudnn v5.1。
98
+ PaddlePaddle在编译时/运行时会自动找到系统中安装的CUDA和cuDNN库进行编译和执行。
99
+
100
+ PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cuDNN是同一个版本。
101
+ 我们推荐使用最新版本的cuDNN。
109
102
110
103
编译选项的设置
111
104
++++++++++++++
112
105
113
- PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/Cudnn库 。cmake编译时,首先在系统路径(/usr/lib\: /usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D `` 命令可以设置,例如
106
+ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库 。cmake编译时,首先在系统路径(/usr/lib\: /usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D `` 命令可以设置,例如
114
107
115
108
.. code-block :: bash
116
109
117
- cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5
110
+ cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5
118
111
119
112
注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(``rm -rf ``)后,再指定。
0 commit comments