Files
paddlepaddle--paddle/test/cpp/inference/test.cmake
T
2026-07-13 12:40:42 +08:00

168 lines
6.0 KiB
CMake

include(ExternalProject)
set(INFERENCE_URL
"http://paddle-inference-dist.bj.bcebos.com"
CACHE STRING "inference download url")
set(INFERENCE_DEMO_INSTALL_DIR
"${THIRD_PARTY_PATH}/inference_demo"
CACHE STRING "A path setting inference demo download directories.")
set(CPU_NUM_THREADS_ON_CI
4
CACHE STRING "Run multi-threads on CI to reduce CI time.")
set(WARMUP_BATCH_SIZE
100
CACHE STRING "Default warmup_batch_size.")
function(inference_download INSTALL_DIR URL FILENAME)
message(STATUS "Download inference test stuff from ${URL}/${FILENAME}")
string(REGEX REPLACE "[-%.]" "_" FILENAME_EX ${FILENAME})
ExternalProject_Add(
extern_inference_download_${FILENAME_EX}
${EXTERNAL_PROJECT_LOG_ARGS}
PREFIX ${INSTALL_DIR}
URL ${URL}/${FILENAME}
DOWNLOAD_COMMAND wget --no-check-certificate -q -O
${INSTALL_DIR}/${FILENAME} ${URL}/${FILENAME}
DOWNLOAD_DIR ${INSTALL_DIR}
DOWNLOAD_NO_PROGRESS 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
UPDATE_COMMAND ""
INSTALL_COMMAND "")
endfunction()
function(inference_download_and_uncompress INSTALL_DIR URL FILENAME CHECK_SUM)
message(STATUS "Download inference test stuff from ${URL}/${FILENAME}")
string(REGEX REPLACE "[-%./\\]" "_" FILENAME_EX ${FILENAME})
string(REGEX MATCH "[^/\\]+$" DOWNLOAD_NAME ${FILENAME})
set(EXTERNAL_PROJECT_NAME "extern_download_${FILENAME_EX}")
set(UNPACK_DIR "${INSTALL_DIR}/src/${EXTERNAL_PROJECT_NAME}")
ExternalProject_Add(
${EXTERNAL_PROJECT_NAME}
${EXTERNAL_PROJECT_LOG_ARGS}
PREFIX ${INSTALL_DIR}
URL ${URL}/${FILENAME}
URL_HASH MD5=${CHECK_SUM}
DOWNLOAD_DIR ${INSTALL_DIR}
DOWNLOAD_NO_EXTRACT 1
DOWNLOAD_NO_PROGRESS 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${INSTALL_DIR} ${CMAKE_COMMAND} -E
tar xzf ${DOWNLOAD_NAME}
UPDATE_COMMAND ""
INSTALL_COMMAND "")
endfunction()
function(inference_download_and_uncompress_without_verify INSTALL_DIR URL
FILENAME)
message(STATUS "Download inference test stuff from ${URL}/${FILENAME}")
string(REGEX REPLACE "[-%./\\]" "_" FILENAME_EX ${FILENAME})
string(REGEX MATCH "[^/\\]+$" DOWNLOAD_NAME ${FILENAME})
set(EXTERNAL_PROJECT_NAME "extern_download_${FILENAME_EX}")
set(UNPACK_DIR "${INSTALL_DIR}/src/${EXTERNAL_PROJECT_NAME}")
get_property(TARGET_EXIST GLOBAL PROPERTY ${EXTERNAL_PROJECT_NAME})
if(NOT "${TARGET_EXIST}" STREQUAL EXIST)
ExternalProject_Add(
${EXTERNAL_PROJECT_NAME}
${EXTERNAL_PROJECT_LOG_ARGS}
PREFIX ${INSTALL_DIR}
URL ${URL}/${FILENAME}
DOWNLOAD_DIR ${INSTALL_DIR}
DOWNLOAD_NO_EXTRACT 1
DOWNLOAD_NO_PROGRESS 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${INSTALL_DIR} ${CMAKE_COMMAND} -E
tar xzf ${DOWNLOAD_NAME}
UPDATE_COMMAND ""
INSTALL_COMMAND "")
set_property(GLOBAL PROPERTY ${EXTERNAL_PROJECT_NAME} "EXIST")
endif()
endfunction()
function(inference_base_test_build TARGET)
set(options "")
set(oneValueArgs "")
set(multiValueArgs SRCS DEPS)
cmake_parse_arguments(base_test "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
add_executable(${TARGET} ${base_test_SRCS})
if(WIN32)
target_compile_definitions(${TARGET} PUBLIC STATIC_PADDLE)
endif()
if("${base_test_DEPS};" MATCHES "paddle_inference_shared;")
list(REMOVE_ITEM base_test_DEPS paddle_inference_shared)
target_link_libraries(${TARGET}
$<TARGET_LINKER_FILE:paddle_inference_shared>)
add_dependencies(${TARGET} paddle_inference_shared)
elseif("${base_test_DEPS};" MATCHES "paddle_inference_c_shared;")
list(REMOVE_ITEM base_test_DEPS paddle_inference_c_shared)
target_link_libraries(
${TARGET} $<TARGET_LINKER_FILE:paddle_inference_c_shared> common)
add_dependencies(${TARGET} paddle_inference_c_shared)
else()
message(
FATAL_ERROR
"inference_base_test_build must link either paddle_inference_shared or paddle_inference_c_shared"
)
endif()
if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
target_link_libraries(${TARGET} ${PYTHON_LIBRARIES})
endif()
if(WITH_SHARED_PHI)
target_link_libraries(${TARGET} phi)
add_dependencies(${TARGET} phi)
endif()
if(WITH_CINN)
target_link_libraries(${TARGET} $<TARGET_LINKER_FILE:cinnapi>)
add_dependencies(${TARGET} cinnapi)
endif()
if(WITH_GPU)
target_link_libraries(${TARGET} ${CUDA_CUDART_LIBRARY})
endif()
if(WITH_XPU)
target_link_libraries(${TARGET} xpulib)
endif()
if(WITH_ROCM)
target_link_libraries(${TARGET} ${ROCM_HIPRTC_LIB})
endif()
if(WITH_ONNXRUNTIME)
target_link_libraries(${TARGET} onnxruntime)
endif()
if(APPLE)
target_link_libraries(
${TARGET}
"-Wl,-rpath,$<TARGET_FILE_DIR:${paddle_lib}> -Wl,-rpath,$<TARGET_FILE_DIR:phi> -Wl,-rpath,$<TARGET_FILE_DIR:pir>"
)
endif()
target_link_libraries(${TARGET} ${base_test_DEPS} paddle_gtest_main_new gtest
glog)
add_dependencies(${TARGET} ${base_test_DEPS} paddle_gtest_main_new)
common_link(${TARGET})
check_coverage_opt(${TARGET} ${base_test_SRCS})
endfunction()
function(inference_base_test_run TARGET)
set(options "")
set(oneValueArgs "")
set(multiValueArgs COMMAND ARGS)
cmake_parse_arguments(base_test "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
if(WITH_GPU)
set(mem_opt "--fraction_of_gpu_memory_to_use=0.5")
endif()
cc_test_run(${TARGET} COMMAND ${base_test_COMMAND} ARGS ${mem_opt}
${base_test_ARGS})
endfunction()
function(inference_base_test TARGET)
set(options "")
set(oneValueArgs "")
set(multiValueArgs SRCS ARGS DEPS)
cmake_parse_arguments(base_test "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
inference_base_test_build(${TARGET} SRCS ${base_test_SRCS} DEPS
${base_test_DEPS})
inference_base_test_run(${TARGET} COMMAND ${TARGET} ARGS ${base_test_ARGS})
endfunction()