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) | |||
| 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) | |||
| 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() | |||
| 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_options(${MODULE_NAME} PRIVATE -Wno-unused-parameter) | |||
| @@ -8,7 +8,7 @@ if [[ "$TEST_PLAT" == cpu ]]; then | |||
| elif [[ "$TEST_PLAT" == cuda ]]; then | |||
| echo "test both cpu and gpu pytest" | |||
| else | |||
| log "Argument must cpu or cuda" | |||
| echo "Argument must cpu or cuda" | |||
| exit 1 | |||
| fi | |||
| @@ -15,26 +15,15 @@ function build_flatc() { | |||
| REMOVE_OLD_BUILD=$2 | |||
| 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 | |||
| echo "strip remove old build" | |||
| 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 | |||
| cmake -G "$MAKEFILE_TYPE Makefiles" \ | |||
| @@ -57,14 +46,9 @@ function try_remove_old_build() { | |||
| INSTALL_DIR=$3 | |||
| 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 | |||
| echo "strip remove old build" | |||
| fi | |||
| @@ -84,6 +84,13 @@ function config_python_env() { | |||
| 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() { | |||
| for ver in ${ALL_PYTHON} | |||
| do | |||
| @@ -142,6 +149,15 @@ function do_build() { | |||
| echo "valid..." | |||
| 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 | |||
| ${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 | |||
| BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_ON/MGE_INFERENCE_ONLY_OFF/Release/build/ | |||
| fi | |||
| SO_NAME=_imperative_rt | |||
| SO_PATH=megengine/core | |||
| 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} | |||
| do | |||
| python_ver=${ver:0:2} | |||
| MAJOR=${python_ver:0:1} | |||
| MINOR=${ver:1} | |||
| 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_PREFIX_PATH=${PYTHON_DIR}" | |||
| 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 | |||
| 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 | |||
| if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then | |||
| 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 | |||
| cd ${BUILD_DIR}/staging/ | |||
| @@ -174,6 +174,16 @@ else() | |||
| set (_VER_FILE ${PROJECT_SOURCE_DIR}/imperative/src/version.ld) | |||
| 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 | |||
| add_library(megengine) | |||
| target_link_libraries(megengine PUBLIC megbrain megdnn) | |||