PaddlePaddle的编译选项¶
PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 官方文档 。
Bool型的编译选项¶
用户可在cmake的命令行中,通过使用 -D
命令设置该类编译选项,例如
cmake .. -DWITH_GPU=OFF
选项 | 说明 | 默认值 |
WITH_GPU | 是否支持GPU。 | 取决于是否寻找到CUDA工具链 |
WITH_DOUBLE | 是否使用双精度浮点数。 | 否 |
WITH_DSO | 是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。 | 是 |
WITH_AVX | 是否编译含有AVX指令集的PaddlePaddle二进制文件 | 是 |
WITH_PYTHON | 是否内嵌PYTHON解释器。方便今后的嵌入式移植工作。 | 是 |
WITH_STYLE_CHECK | 是否编译时进行代码风格检查 | 是 |
WITH_RDMA | 是否开启RDMA | 否 |
WITH_TIMER | 是否开启计时功能。如果开启会导致运行略慢,打印的日志变多,但是方便调试和测Benchmark | 否 |
WITH_TESTING | 是否开启单元测试 | 取决于是否寻找到GTEST |
WITH_DOC | 是否编译中英文文档 | 否 |
WITH_SWIG_PY | 是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练 | 取决于是否寻找到SWIG |
BLAS/CUDA/Cudnn的编译选项¶
BLAS¶
PaddlePaddle支持以下任意一种BLAS库:MKL ,ATLAS ,OpenBlAS 和 REFERENCE BLAS 。
编译选项 | 描述 | 注意 |
MKL_ROOT | MKL的路径 | ${MKL_ROOT}/include下需要包含mkl.h,${MKL_ROOT}/lib目录下需要包含mkl_core,mkl_sequential和mkl_intel_lp64三个库。 |
ATLAS_ROOT | ATLAS的路径 | ${ATLAS_ROOT}/include下需要包含cblas.h,${ATLAS_ROOT}/lib下需要包含cblas和atlas两个库。 |
OPENBLAS_ROOT | OpenBLAS的路径 | ${OPENBLAS_ROOT}/include下需要包含cblas.h,${OPENBLAS_ROOT}/lib下需要包含openblas库。 |
REFERENCE_CBLAS_ROOT | REFERENCE BLAS的路径 | ${REFERENCE_CBLAS_ROOT}/include下需要包含cblas.h,${REFERENCE_CBLAS_ROOT}/lib下需要包含cblas库。 |
CUDA/Cudnn¶
PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cudnn是同一个版本。 我们推荐使用最新版本的cudnn v5.1。
编译选项的设置¶
PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/Cudnn库。cmake编译时,首先在系统路径(/usr/lib:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 -D
命令可以设置,例如
cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5
注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(rm -rf
)后,再指定。