paddlepaddle.cmake 11.0 KB
Newer Older
W
wangguibao 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

INCLUDE(ExternalProject)

W
wangguibao 已提交
17
SET(PADDLE_SOURCES_DIR ${THIRD_PARTY_PATH}/Paddle)
W
wangguibao 已提交
18
SET(PADDLE_DOWNLOAD_DIR ${PADDLE_SOURCES_DIR}/src/extern_paddle)
W
serving  
wangguibao 已提交
19
SET(PADDLE_INSTALL_DIR ${THIRD_PARTY_PATH}/install/Paddle/)
W
wangguibao 已提交
20
SET(PADDLE_INCLUDE_DIR "${PADDLE_INSTALL_DIR}/include" CACHE PATH "PaddlePaddle include directory." FORCE)
Z
zhangjun 已提交
21
SET(PADDLE_LIBRARIES "${PADDLE_INSTALL_DIR}/lib/libpaddle_inference.a" CACHE FILEPATH "Paddle library." FORCE)
W
wangguibao 已提交
22

G
guru4elephant 已提交
23
message("paddle install dir: " ${PADDLE_INSTALL_DIR})
W
wangguibao 已提交
24 25 26 27

# Reference https://stackoverflow.com/questions/45414507/pass-a-list-of-prefix-paths-to-externalproject-add-in-cmake-args
set(prefix_path "${THIRD_PARTY_PATH}/install/gflags|${THIRD_PARTY_PATH}/install/leveldb|${THIRD_PARTY_PATH}/install/snappy|${THIRD_PARTY_PATH}/install/gtest|${THIRD_PARTY_PATH}/install/protobuf|${THIRD_PARTY_PATH}/install/zlib|${THIRD_PARTY_PATH}/install/glog")

W
Wang Guibao 已提交
28 29
message( "WITH_GPU = ${WITH_GPU}")

W
wangguibao 已提交
30 31 32
# Paddle Version should be one of:
# latest: latest develop build
# version number like 1.5.2
T
TeslaZhao 已提交
33
SET(PADDLE_VERSION "2.3.0")
W
wangjiawei04 已提交
34
if (WITH_GPU)
B
bjjwwang 已提交
35
    message("CUDA: ${CUDA_VERSION}, CUDNN_MAJOR_VERSION: ${CUDNN_MAJOR_VERSION}")
B
bjjwwang 已提交
36 37 38
    # cuda 11.0 is not supported, 11.2 would be added.
    if(CUDA_VERSION EQUAL 10.1)
        set(CUDA_SUFFIX "x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5")
W
wangjiawei04 已提交
39 40
        set(WITH_TRT ON)
    elseif(CUDA_VERSION EQUAL 10.2)
B
bjjwwang 已提交
41
        if(CUDNN_MAJOR_VERSION EQUAL 7)
T
TeslaZhao 已提交
42
            set(CUDA_SUFFIX "x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn7.6.5_trt6.0.1.5")
B
bjjwwang 已提交
43 44 45 46 47 48 49
            set(WITH_TRT ON)
        elseif(CUDNN_MAJOR_VERSION EQUAL 8)
            set(CUDA_SUFFIX "x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn8.1.1_trt7.2.3.4")
            set(WITH_TRT ON)
        endif()
    elseif(CUDA_VERSION EQUAL 11.2)
        set(CUDA_SUFFIX "x86-64_gcc8.2_avx_mkl_cuda11.2_cudnn8.2.1_trt8.0.3.4")
W
wangjiawei04 已提交
50 51 52 53
        set(WITH_TRT ON)
    endif()
else()
    set(WITH_TRT OFF)
W
wangjiawei04 已提交
54
endif()  
W
wangguibao 已提交
55
if (WITH_GPU)
T
TeslaZhao 已提交
56
    SET(PADDLE_VERSION "2.3.0-no-ort")
B
bjjwwang 已提交
57
    SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/GPU/${CUDA_SUFFIX}")
Z
zhangjun 已提交
58
elseif (WITH_LITE)
B
bjjwwang 已提交
59
    message("cpu arch: ${CMAKE_SYSTEM_PROCESSOR}")
Z
zhangjun 已提交
60
    if (WITH_XPU)
S
ShiningZhang 已提交
61
        if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
S
ShiningZhang 已提交
62
            SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/XPU/x86-64_gcc8.2_py36_avx_mkl")
B
bjjwwang 已提交
63
        elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
S
ShiningZhang 已提交
64
            SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/XPU/arm64_gcc7.3_py36_openblas")
B
bjjwwang 已提交
65
        endif()
66 67 68 69 70 71 72
    elseif (WITH_ASCEND_CL)
        if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
             MESSAGE("paddle lite lib is unknown.")
             SET(PADDLE_LIB_VERSION "paddle-lite-unknown")
         elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
             SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/ASCEND/arm64_gcc7.5_openblas_lite2.10")
         endif()
Z
zhangjun 已提交
73
    else()
B
bjjwwang 已提交
74 75
        MESSAGE("paddle lite lib is unknown.")
        SET(PADDLE_LIB_VERSION "paddle-lite-unknown")
Z
zhangjun 已提交
76
    endif()
S
ShiningZhang 已提交
77 78
elseif (WITH_ROCM)
    SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/rocm")
S
ShiningZhang 已提交
79 80 81 82 83 84 85 86
elseif (WITH_ASCEND_CL)
    message("cpu arch: ${CMAKE_SYSTEM_PROCESSOR}")
    if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
        MESSAGE("paddle lib is unknown.")
        SET(PADDLE_LIB_VERSION "paddle-unknown")
    elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
        SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/ASCEND/arm64_gcc8.2_openblas")
    endif()
W
wangguibao 已提交
87
else()
G
guru4elephant 已提交
88
    if (WITH_AVX)
T
TeslaZhao 已提交
89
        SET(PADDLE_VERSION "2.3.0-no-ort")
W
wangguibao 已提交
90
        if (WITH_MKLML)
B
bjjwwang 已提交
91
            SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/CPU/gcc8.2_avx_mkl")
W
wangguibao 已提交
92
        else()
B
bjjwwang 已提交
93
            SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/CPU/gcc8.2_avx_openblas")
W
wangguibao 已提交
94 95
        endif()
    else()
B
bjjwwang 已提交
96
        SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/CPU/gcc8.2_openblas")
W
wangguibao 已提交
97 98
    endif()
endif()
S
ShiningZhang 已提交
99
if(WITH_JETSON)
T
TeslaZhao 已提交
100
    SET(PADDLE_VERSION "2.3.0")
S
ShiningZhang 已提交
101 102
    SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Jetson/jetpack4.6_gcc7.5/all")
endif()
W
wangguibao 已提交
103

Z
zhangjun 已提交
104
if(WITH_LITE)
105
    if (WITH_XPU)
S
ShiningZhang 已提交
106
        SET(PADDLE_LIB_PATH "https://paddle-serving.bj.bcebos.com/inferlib/${PADDLE_LIB_VERSION}/paddle_inference_install_dir.tar.gz ")
107 108 109
    elseif (WITH_ASCEND_CL)
        SET(PADDLE_LIB_PATH "http://paddle-serving.bj.bcebos.com/inferlib/${PADDLE_LIB_VERSION}/paddle_inference_install_dir.tgz ")
    endif()
S
ShiningZhang 已提交
110 111
elseif(WITH_ASCEND_CL)
    SET(PADDLE_LIB_PATH "http://paddle-serving.bj.bcebos.com/inferlib/${PADDLE_LIB_VERSION}/paddle_inference.tgz ")
S
ShiningZhang 已提交
112 113
elseif(WITH_JETSON)
    SET(PADDLE_LIB_PATH "http://paddle-inference-lib.bj.bcebos.com/${PADDLE_LIB_VERSION}/paddle_inference_install_dir.tgz")
Z
zhangjun 已提交
114
else()
115
    SET(PADDLE_LIB_PATH "http://paddle-inference-lib.bj.bcebos.com/${PADDLE_LIB_VERSION}/paddle_inference.tgz")
Z
zhangjun 已提交
116 117
endif()

W
wangguibao 已提交
118
MESSAGE(STATUS "PADDLE_LIB_PATH=${PADDLE_LIB_PATH}")
S
ShiningZhang 已提交
119
if ((WITH_GPU OR WITH_MKLML) AND NOT WITH_JETSON)
M
MRXLT 已提交
120 121 122 123 124 125 126 127 128 129 130 131 132
    if (WITH_TRT)
        ExternalProject_Add(
            "extern_paddle"
            ${EXTERNAL_PROJECT_LOG_ARGS}
            URL                 "${PADDLE_LIB_PATH}"
            PREFIX              "${PADDLE_SOURCES_DIR}"
            DOWNLOAD_DIR        "${PADDLE_DOWNLOAD_DIR}"
            CONFIGURE_COMMAND   ""
            BUILD_COMMAND       ""
            UPDATE_COMMAND      ""
            INSTALL_COMMAND
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/include ${PADDLE_INSTALL_DIR}/include &&
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/lib ${PADDLE_INSTALL_DIR}/lib &&
W
wangjiawei04 已提交
133 134
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/third_party ${PADDLE_INSTALL_DIR}/third_party &&
                ${CMAKE_COMMAND} -E copy ${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib/libdnnl.so.1 ${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib/libdnnl.so
M
MRXLT 已提交
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
        )
    else()
        ExternalProject_Add(
            "extern_paddle"
            ${EXTERNAL_PROJECT_LOG_ARGS}
            URL                 "${PADDLE_LIB_PATH}"
            PREFIX              "${PADDLE_SOURCES_DIR}"
            DOWNLOAD_DIR        "${PADDLE_DOWNLOAD_DIR}"
            CONFIGURE_COMMAND   ""
            BUILD_COMMAND       ""
            UPDATE_COMMAND      ""
            INSTALL_COMMAND
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/include ${PADDLE_INSTALL_DIR}/include &&
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/lib ${PADDLE_INSTALL_DIR}/lib &&
                ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/third_party ${PADDLE_INSTALL_DIR}/third_party &&
                ${CMAKE_COMMAND} -E copy ${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib/libmkldnn.so.0 ${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib/libmkldnn.so 
        )
    endif()
M
MRXLT 已提交
153 154 155 156 157 158 159 160 161 162 163 164 165 166
else()
ExternalProject_Add(
    "extern_paddle"
    ${EXTERNAL_PROJECT_LOG_ARGS}
    URL                 "${PADDLE_LIB_PATH}"
    PREFIX              "${PADDLE_SOURCES_DIR}"
    DOWNLOAD_DIR        "${PADDLE_DOWNLOAD_DIR}"
    CONFIGURE_COMMAND   ""
    BUILD_COMMAND       ""
    UPDATE_COMMAND      ""
    INSTALL_COMMAND
        ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/include ${PADDLE_INSTALL_DIR}/include &&
        ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/paddle/lib ${PADDLE_INSTALL_DIR}/lib &&
        ${CMAKE_COMMAND} -E copy_directory ${PADDLE_DOWNLOAD_DIR}/third_party ${PADDLE_INSTALL_DIR}/third_party
W
wangguibao 已提交
167
)
G
guru4elephant 已提交
168 169
endif()

W
wangguibao 已提交
170
INCLUDE_DIRECTORIES(${PADDLE_INCLUDE_DIR})
W
wangguibao 已提交
171 172
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${PADDLE_INSTALL_DIR}/third_party/install/mklml/lib")
LINK_DIRECTORIES(${PADDLE_INSTALL_DIR}/third_party/install/mklml/lib)
W
wangguibao 已提交
173

W
wangguibao 已提交
174 175
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib")
LINK_DIRECTORIES(${PADDLE_INSTALL_DIR}/third_party/install/mkldnn/lib)
W
wangguibao 已提交
176

T
TeslaZhao 已提交
177 178
#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${PADDLE_INSTALL_DIR}/third_party/install/paddle2onnx/lib")
#LINK_DIRECTORIES(${PADDLE_INSTALL_DIR}/third_party/install/paddle2onnx/lib)
T
TeslaZhao 已提交
179

T
TeslaZhao 已提交
180 181
#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${PADDLE_INSTALL_DIR}/third_party/install/onnxruntime/lib")
#LINK_DIRECTORIES(${PADDLE_INSTALL_DIR}/third_party/install/onnxruntime/lib)
T
TeslaZhao 已提交
182

Z
zhangjun 已提交
183 184 185 186
if (NOT WITH_MKLML)
    ADD_LIBRARY(openblas STATIC IMPORTED GLOBAL)
    SET_PROPERTY(TARGET openblas PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/openblas/lib/libopenblas.a)
endif()
G
guru4elephant 已提交
187

T
TeslaZhao 已提交
188 189
#ADD_LIBRARY(paddle2onnx STATIC IMPORTED GLOBAL)
#SET_PROPERTY(TARGET paddle2onnx PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/paddle2onnx/lib/libpaddle2onnx.so)
T
TeslaZhao 已提交
190

T
TeslaZhao 已提交
191 192
#ADD_LIBRARY(onnxruntime STATIC IMPORTED GLOBAL)
#SET_PROPERTY(TARGET onnxruntime PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/onnxruntime/lib/libonnxruntime.so.1.10.0)
T
TeslaZhao 已提交
193

Z
zhangjun 已提交
194
ADD_LIBRARY(paddle_inference STATIC IMPORTED GLOBAL)
T
TeslaZhao 已提交
195
SET_PROPERTY(TARGET paddle_inference PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/lib/libpaddle_inference.a)
T
TeslaZhao 已提交
196

S
ShiningZhang 已提交
197
if (WITH_ASCEND_CL OR WITH_XPU)
198 199
    SET_PROPERTY(TARGET paddle_inference PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/lib/libpaddle_inference.so)
endif()
M
MRXLT 已提交
200

M
MRXLT 已提交
201
if (WITH_TRT)
Z
update  
zhangjun 已提交
202 203 204 205 206
    ADD_LIBRARY(nvinfer SHARED IMPORTED GLOBAL)
    SET_PROPERTY(TARGET nvinfer PROPERTY IMPORTED_LOCATION ${TENSORRT_ROOT}/lib/libnvinfer.so)
    
    ADD_LIBRARY(nvinfer_plugin SHARED IMPORTED GLOBAL)
    SET_PROPERTY(TARGET nvinfer_plugin PROPERTY IMPORTED_LOCATION ${TENSORRT_ROOT}/lib/libnvinfer_plugin.so)
M
MRXLT 已提交
207
endif()
M
MRXLT 已提交
208

Z
zhangjun 已提交
209
if (WITH_LITE)
Z
zhangjun 已提交
210 211
    ADD_LIBRARY(paddle_full_api_shared STATIC IMPORTED GLOBAL)
    SET_PROPERTY(TARGET paddle_full_api_shared PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/lite/cxx/lib/libpaddle_full_api_shared.so)
Z
update  
zhangjun 已提交
212 213 214 215 216 217 218 219
    
    if (WITH_XPU)
        ADD_LIBRARY(xpuapi SHARED IMPORTED GLOBAL)
        SET_PROPERTY(TARGET xpuapi PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/xpu/lib/libxpuapi.so)
    
        ADD_LIBRARY(xpurt SHARED IMPORTED GLOBAL)
        SET_PROPERTY(TARGET xpurt PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/xpu/lib/libxpurt.so)
    endif()
M
MRXLT 已提交
220
endif()
W
wangguibao 已提交
221

W
serving  
wangguibao 已提交
222
ADD_LIBRARY(xxhash STATIC IMPORTED GLOBAL)
W
wangguibao 已提交
223
SET_PROPERTY(TARGET xxhash PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/xxhash/lib/libxxhash.a)
W
serving  
wangguibao 已提交
224

H
HexToString 已提交
225 226 227
ADD_LIBRARY(cryptopp STATIC IMPORTED GLOBAL)
SET_PROPERTY(TARGET cryptopp PROPERTY IMPORTED_LOCATION ${PADDLE_INSTALL_DIR}/third_party/install/cryptopp/lib/libcryptopp.a)

W
wangguibao 已提交
228
LIST(APPEND external_project_dependencies paddle)
W
wangguibao 已提交
229

W
serving  
wangguibao 已提交
230
LIST(APPEND paddle_depend_libs
H
HexToString 已提交
231
        xxhash cryptopp)
M
MRXLT 已提交
232

Z
zhangjun 已提交
233
if(WITH_LITE)
Z
zhangjun 已提交
234
    LIST(APPEND paddle_depend_libs paddle_full_api_shared)
Z
update  
zhangjun 已提交
235 236 237
    if(WITH_XPU)
        LIST(APPEND paddle_depend_libs xpuapi xpurt)
    endif()
Z
zhangjun 已提交
238 239
endif()

M
MRXLT 已提交
240
if(WITH_TRT)
Z
update  
zhangjun 已提交
241 242
    LIST(APPEND paddle_depend_libs
        nvinfer nvinfer_plugin)
M
MRXLT 已提交
243
endif()