|
|
|
file(GLOB UTILS_PY_FILES . ./paddle/legacy/utils/*.py)
|
|
|
|
file(GLOB_RECURSE FLUID_PY_FILES ./paddle/fluid/*.py)
|
|
|
|
set(PY_FILES paddle/__init__.py
|
|
|
|
${UTILS_PY_FILES}
|
|
|
|
${FLUID_PY_FILES})
|
|
|
|
|
|
|
|
if(WITH_GPU)
|
|
|
|
SET(PACKAGE_NAME "paddlepaddle-gpu")
|
|
|
|
else()
|
|
|
|
SET(PACKAGE_NAME "paddlepaddle")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(SETUP_LOG_FILE "setup.py.log")
|
|
|
|
|
|
|
|
set(FLUID_CORE_NAME "core")
|
|
|
|
if(WITH_AVX AND AVX_FOUND)
|
|
|
|
set(FLUID_CORE_NAME "${FLUID_CORE_NAME}_avx")
|
|
|
|
if(NOT DEFINED NOAVX_CORE_FILE OR NOAVX_CORE_FILE STREQUAL "")
|
|
|
|
message(STATUS "WARNING: This is just a warning for publishing release.
|
|
|
|
You are building AVX version without NOAVX core.
|
|
|
|
So the wheel package may fail on NOAVX machine.
|
|
|
|
You can add -DFLUID_CORE_NAME=/path/to/your/core_noavx.* in cmake command
|
|
|
|
to get a full wheel package to resolve this warning.
|
|
|
|
While, this version will still work on local machine.")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(NOAVX_CORE_FILE AND NOT EXISTS "${NOAVX_CORE_FILE}")
|
|
|
|
message(FATAL_ERROR "The file ${NOAVX_CORE_FILE} does not exist!")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(HAS_NOAVX_CORE ON)
|
|
|
|
else()
|
|
|
|
set(FLUID_CORE_NAME "${FLUID_CORE_NAME}_noavx")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/setup.py)
|
|
|
|
|
|
|
|
set(FLUID_DST_DIR ${PADDLE_BINARY_DIR}/python/paddle/fluid/)
|
|
|
|
|
|
|
|
IF(WIN32)
|
|
|
|
# Python would use the .pyd by default under Windows series platform
|
|
|
|
set(FLUID_CORE ${FLUID_DST_DIR}/${FLUID_CORE_NAME}.pyd)
|
|
|
|
set(FLUID_NOAVX_CORE ${FLUID_DST_DIR}/core_noavx.pyd)
|
|
|
|
ELSE()
|
|
|
|
set(FLUID_CORE ${FLUID_DST_DIR}/${FLUID_CORE_NAME}.so)
|
|
|
|
set(FLUID_NOAVX_CORE ${FLUID_DST_DIR}/core_noavx.so)
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
set(FLUID_CORE_DEPS ${FLUID_CORE})
|
|
|
|
|
|
|
|
if(HAS_NOAVX_CORE AND EXISTS "${NOAVX_CORE_FILE}")
|
|
|
|
get_filename_component(NOAVX_CORE_NAME ${NOAVX_CORE_FILE} NAME)
|
|
|
|
get_filename_component(NOAVX_CORE_EXT ${NOAVX_CORE_FILE} EXT)
|
|
|
|
if(WIN32)
|
|
|
|
if(NOT NOAVX_CORE_EXT STREQUAL ".pyd")
|
|
|
|
message(FATAL_ERROR "Wrong file ${NOAVX_CORE_NAME}, the ext does not match windows *.pyd!")
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
if(NOT NOAVX_CORE_EXT STREQUAL ".so")
|
|
|
|
message(FATAL_ERROR "Wrong file ${NOAVX_CORE_NAME}, the ext does not match *.so!")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
add_custom_command(OUTPUT ${FLUID_NOAVX_CORE}
|
|
|
|
COMMAND cmake -E copy ${NOAVX_CORE_FILE} ${FLUID_NOAVX_CORE} DEPENDS paddle_pybind)
|
|
|
|
list(APPEND FLUID_CORE_DEPS ${FLUID_NOAVX_CORE})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_custom_command(OUTPUT ${FLUID_CORE}
|
|
|
|
COMMAND cmake -E copy $<TARGET_FILE:paddle_pybind> ${FLUID_CORE}
|
|
|
|
DEPENDS paddle_pybind)
|
|
|
|
add_custom_target(copy_paddle_pybind ALL DEPENDS ${FLUID_CORE_DEPS})
|
|
|
|
|
|
|
|
IF(WIN32)
|
|
|
|
add_custom_command(OUTPUT ${PADDLE_PYTHON_BUILD_DIR}/.timestamp
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PADDLE_SOURCE_DIR}/python/paddle ${PADDLE_BINARY_DIR}/python/paddle/
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
|
|
|
|
DEPENDS copy_paddle_pybind ${FLUID_CORE} framework_py_proto profiler_py_proto ${PY_FILES})
|
|
|
|
ELSE(WIN32)
|
|
|
|
add_custom_command(OUTPUT ${PADDLE_PYTHON_BUILD_DIR}/.timestamp
|
|
|
|
COMMAND touch stub.cc
|
|
|
|
COMMAND cp -r ${PADDLE_SOURCE_DIR}/python/paddle ${PADDLE_BINARY_DIR}/python
|
|
|
|
COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
|
|
|
|
DEPENDS copy_paddle_pybind ${FLUID_CORE} framework_py_proto profiler_py_proto ${PY_FILES})
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
add_custom_target(paddle_python ALL DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp)
|
|
|
|
|
|
|
|
set(PADDLE_PYTHON_PACKAGE_DIR ${CMAKE_CURRENT_BINARY_DIR}/dist/)
|
|
|
|
|
|
|
|
if (WITH_TESTING)
|
|
|
|
add_subdirectory(paddle/reader/tests)
|
|
|
|
add_subdirectory(paddle/dataset/tests)
|
|
|
|
add_subdirectory(paddle/fluid/tests)
|
|
|
|
add_subdirectory(paddle/fluid/contrib/tests)
|
|
|
|
add_subdirectory(paddle/fluid/contrib/slim/tests)
|
Add a high-level API with traning and inference into Paddle. (#24293)
* Merge hapi into Paddle
Hapi is a high level API for training and inference.
The main modules include Model, Loss, Metrics, Dataset.
Also includes common modules and models in NLP and computer vision, such as BERT, ResNet.
These modules are developed by:
0YuanZhang0, guoshengCS heavengate, LielinJiang, qingqing01, xyzhou-puck huangjun12, wangxiao1021, zhangyang.
5 years ago
|
|
|
add_subdirectory(paddle/incubate/hapi/tests)
|
|
|
|
endif()
|
|
|
|
install(DIRECTORY ${PADDLE_PYTHON_PACKAGE_DIR}
|
|
|
|
DESTINATION opt/paddle/share/wheels
|
|
|
|
)
|
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
find_program(INSTALL_NAME_TOOL_EXECUTABLE install_name_tool)
|
|
|
|
if(NOT INSTALL_NAME_TOOL_EXECUTABLE)
|
|
|
|
message(FATAL_ERROR "install_name_tool not found, please check.\n")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if(LINUX)
|
|
|
|
find_program(PATCHELF_EXECUTABLE patchelf)
|
|
|
|
if(NOT PATCHELF_EXECUTABLE)
|
|
|
|
message(FATAL_ERROR "patchelf not found, please install it.\n"
|
|
|
|
"For Ubuntu, the command is: apt-get install -y patchelf.")
|
|
|
|
endif()
|
|
|
|
endif(LINUX)
|