PaddlePaddle的编译选项

PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 官方文档

Bool型的编译选项

用户可在cmake的命令行中,通过使用 -D 命令设置该类编译选项,例如

cmake .. -DWITH_GPU=OFF
Bool型的编译选项
选项 说明 默认值
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库:MKLATLASOpenBlASREFERENCE BLAS

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)后,再指定。