GitOrigin-RevId: d60c4052c1
tags/v1.0.0-rc1
| @@ -52,15 +52,15 @@ add_custom_target(_version_ld SOURCES ${VERSION_SCRIPT}) | |||||
| add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/pybind11 ${PROJECT_BINARY_DIR}/third_party/pybind11) | add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/pybind11 ${PROJECT_BINARY_DIR}/third_party/pybind11) | ||||
| pybind11_add_module(${MODULE_NAME} NO_EXTRAS ${SRCS}) | pybind11_add_module(${MODULE_NAME} NO_EXTRAS ${SRCS}) | ||||
| if (APPLE OR MSVC OR WIN32) | |||||
| if (APPLE) | |||||
| target_link_libraries(${MODULE_NAME} PRIVATE megengine_export) | |||||
| elseif (MSVC OR WIN32) | |||||
| # Windows does not support implicitly importing data members from DLL. | |||||
| target_link_libraries(${MODULE_NAME} PRIVATE megbrain megdnn) | target_link_libraries(${MODULE_NAME} PRIVATE megbrain megdnn) | ||||
| else() | else() | ||||
| target_link_libraries(${MODULE_NAME} PRIVATE megbrain megdnn -Wl,--version-script=${VERSION_SCRIPT}) | |||||
| endif() | |||||
| if (MGE_WITH_DISTRIBUTED) | |||||
| message("Imperative configured to link megray") | |||||
| target_link_libraries(${MODULE_NAME} PRIVATE megray) | |||||
| target_link_libraries(${MODULE_NAME} PRIVATE megengine_export -Wl,--version-script=${VERSION_SCRIPT}) | |||||
| endif() | endif() | ||||
| target_include_directories(${MODULE_NAME} PUBLIC src/include PRIVATE ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR}) | target_include_directories(${MODULE_NAME} PUBLIC src/include PRIVATE ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR}) | ||||
| target_compile_definitions(${MODULE_NAME} PRIVATE MODULE_NAME=${MODULE_NAME}) | target_compile_definitions(${MODULE_NAME} PRIVATE MODULE_NAME=${MODULE_NAME}) | ||||
| target_compile_options(${MODULE_NAME} PRIVATE -Wno-unused-parameter) | target_compile_options(${MODULE_NAME} PRIVATE -Wno-unused-parameter) | ||||
| @@ -8,7 +8,7 @@ if [[ "$TEST_PLAT" == cpu ]]; then | |||||
| elif [[ "$TEST_PLAT" == cuda ]]; then | elif [[ "$TEST_PLAT" == cuda ]]; then | ||||
| echo "test both cpu and gpu pytest" | echo "test both cpu and gpu pytest" | ||||
| else | else | ||||
| log "Argument must cpu or cuda" | |||||
| echo "Argument must cpu or cuda" | |||||
| exit 1 | exit 1 | ||||
| fi | fi | ||||
| @@ -15,26 +15,15 @@ function build_flatc() { | |||||
| REMOVE_OLD_BUILD=$2 | REMOVE_OLD_BUILD=$2 | ||||
| if [ $REMOVE_OLD_BUILD = "true" ]; then | if [ $REMOVE_OLD_BUILD = "true" ]; then | ||||
| if [ -e $BUILD_DIR ];then | |||||
| echo "clean old dir: $BUILD_DIR" | |||||
| rm -rf $BUILD_DIR | |||||
| fi | |||||
| if [ -e $INSTALL_DIR ];then | |||||
| echo "clean old dir: $INSTALL_DIR" | |||||
| rm -rf $INSTALL_DIR | |||||
| fi | |||||
| echo "remove old build/install dir" | |||||
| rm -rf $INSTALL_DIR | |||||
| rm -rf $BUILD_DIR | |||||
| else | else | ||||
| echo "strip remove old build" | echo "strip remove old build" | ||||
| fi | fi | ||||
| if [ ! -e $BUILD_DIR ];then | |||||
| echo "create build: $BUILD_DIR" | |||||
| mkdir -p $BUILD_DIR | |||||
| fi | |||||
| if [ ! -e $INSTALL_DIR ];then | |||||
| echo "create install $INSTALL_DIR" | |||||
| mkdir -p $INSTALL_DIR | |||||
| fi | |||||
| mkdir -p $BUILD_DIR | |||||
| mkdir -p $INSTALL_DIR | |||||
| cd $BUILD_DIR | cd $BUILD_DIR | ||||
| cmake -G "$MAKEFILE_TYPE Makefiles" \ | cmake -G "$MAKEFILE_TYPE Makefiles" \ | ||||
| @@ -57,14 +46,9 @@ function try_remove_old_build() { | |||||
| INSTALL_DIR=$3 | INSTALL_DIR=$3 | ||||
| if [ $REMOVE_OLD_BUILD = "true" ]; then | if [ $REMOVE_OLD_BUILD = "true" ]; then | ||||
| if [ -e $BUILD_DIR ];then | |||||
| echo "clean old dir: $BUILD_DIR" | |||||
| rm -rf $BUILD_DIR | |||||
| fi | |||||
| if [ -e $INSTALL_DIR ];then | |||||
| echo "clean old dir: $INSTALL_DIR" | |||||
| rm -rf $INSTALL_DIR | |||||
| fi | |||||
| echo "remove old build/install dir" | |||||
| rm -rf ${BUILD_DIR} | |||||
| rm -rf ${INSTALL_DIR} | |||||
| else | else | ||||
| echo "strip remove old build" | echo "strip remove old build" | ||||
| fi | fi | ||||
| @@ -84,6 +84,13 @@ function config_python_env() { | |||||
| fi | fi | ||||
| } | } | ||||
| MEGENGINE_LIB="${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_OFF/MGE_INFERENCE_ONLY_OFF/Release/build/src/libmegengine_export.dylib" | |||||
| function depend_real_copy() { | |||||
| REAL_DST=$1 | |||||
| echo "real copy lib to $1" | |||||
| cp "${MEGENGINE_LIB}" ${REAL_DST} | |||||
| } | |||||
| function do_build() { | function do_build() { | ||||
| for ver in ${ALL_PYTHON} | for ver in ${ALL_PYTHON} | ||||
| do | do | ||||
| @@ -142,6 +149,15 @@ function do_build() { | |||||
| echo "valid..." | echo "valid..." | ||||
| fi | fi | ||||
| #handle dlopen path | |||||
| install_name_tool -change @rpath/libmegengine_export.dylib @loader_path/lib/libmegengine_export.dylib _imperative_rt.so | |||||
| #copy megbrain_export lib | |||||
| DEPEND_LIB=${BUILD_DIR}/staging/megengine/core/lib/ | |||||
| rm -rf ${DEPEND_LIB} | |||||
| mkdir ${DEPEND_LIB} | |||||
| depend_real_copy ${DEPEND_LIB} | |||||
| cd ${BUILD_DIR}/staging | cd ${BUILD_DIR}/staging | ||||
| ${PYTHON_DIR}/bin/python3 setup.py bdist_wheel | ${PYTHON_DIR}/bin/python3 setup.py bdist_wheel | ||||
| @@ -16,17 +16,22 @@ BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_OFF/MGE_INFERENCE_ONLY_OFF/Rel | |||||
| if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then | if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then | ||||
| BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_ON/MGE_INFERENCE_ONLY_OFF/Release/build/ | BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_ON/MGE_INFERENCE_ONLY_OFF/Release/build/ | ||||
| fi | fi | ||||
| SO_NAME=_imperative_rt | |||||
| SO_PATH=megengine/core | |||||
| NEW_LIB_PATH=core/lib | NEW_LIB_PATH=core/lib | ||||
| function handle_strip() { | |||||
| echo "now handle strip $1" | |||||
| objcopy --only-keep-debug $1 $1.dbg | |||||
| strip -s $1 | |||||
| objcopy --add-gnu-debuglink=$1.dbg $1 | |||||
| rm $1.dbg | |||||
| } | |||||
| for ver in ${ALL_PYTHON} | for ver in ${ALL_PYTHON} | ||||
| do | do | ||||
| python_ver=${ver:0:2} | python_ver=${ver:0:2} | ||||
| MAJOR=${python_ver:0:1} | MAJOR=${python_ver:0:1} | ||||
| MINOR=${ver:1} | MINOR=${ver:1} | ||||
| PYTHON_DIR=/opt/python/cp${python_ver}-cp${ver}/ | PYTHON_DIR=/opt/python/cp${python_ver}-cp${ver}/ | ||||
| EXT_NAME=${SO_NAME}.cpython-${ver}-x86_64-linux-gnu.so | |||||
| export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_BUILD_TYPE=RelWithDebInfo" | export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_BUILD_TYPE=RelWithDebInfo" | ||||
| export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_PREFIX_PATH=${PYTHON_DIR}" | export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_PREFIX_PATH=${PYTHON_DIR}" | ||||
| export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DPYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3" | export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DPYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3" | ||||
| @@ -51,17 +56,15 @@ do | |||||
| ln -sf libcuda.so libcuda.so.1 | ln -sf libcuda.so libcuda.so.1 | ||||
| fi | fi | ||||
| cd ${BUILD_DIR}/staging/${SO_PATH} | |||||
| SO_NAME_EXT=${SO_NAME}.so | |||||
| objcopy --only-keep-debug ${SO_NAME_EXT} ${EXT_NAME}.dbg | |||||
| strip -s ${SO_NAME_EXT} | |||||
| objcopy --add-gnu-debuglink=${EXT_NAME}.dbg ${SO_NAME_EXT} | |||||
| handle_strip ${BUILD_DIR}/src/libmegengine_export.so | |||||
| cd ${BUILD_DIR}/staging/megengine/core | |||||
| handle_strip _imperative_rt.so | |||||
| mkdir -p lib/ucx | mkdir -p lib/ucx | ||||
| if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then | if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then | ||||
| cp -L /usr/local/cuda/lib*/libnvrtc-builtins.so lib | cp -L /usr/local/cuda/lib*/libnvrtc-builtins.so lib | ||||
| cp -L ${BUILD_DIR}/third_party/MegRay/third_party/ucx/lib/ucx/*.so lib/ucx/ | |||||
| strip -s lib/ucx/*.so | |||||
| fi | fi | ||||
| cd ${BUILD_DIR}/staging/ | cd ${BUILD_DIR}/staging/ | ||||
| @@ -174,6 +174,16 @@ else() | |||||
| set (_VER_FILE ${PROJECT_SOURCE_DIR}/imperative/src/version.ld) | set (_VER_FILE ${PROJECT_SOURCE_DIR}/imperative/src/version.ld) | ||||
| endif() | endif() | ||||
| if(MGE_BUILD_IMPERATIVE_RT | |||||
| ) | |||||
| message("-- create a export SHARED lib for python use") | |||||
| add_library(megengine_export SHARED) | |||||
| target_link_libraries(megengine_export PUBLIC megbrain megdnn) | |||||
| if (MGE_WITH_DISTRIBUTED) | |||||
| message("megengine_export configured to link megray") | |||||
| target_link_libraries(megengine_export PUBLIC megray) | |||||
| endif() | |||||
| endif() | |||||
| # Build as SHARED or STATIC depending on BUILD_SHARED_LIBS=ON/OFF | # Build as SHARED or STATIC depending on BUILD_SHARED_LIBS=ON/OFF | ||||
| add_library(megengine) | add_library(megengine) | ||||
| target_link_libraries(megengine PUBLIC megbrain megdnn) | target_link_libraries(megengine PUBLIC megbrain megdnn) | ||||