diff --git a/CMakeLists.txt b/CMakeLists.txt index 1aa9a0716fbb1dba10c38addaf651487045de9d7..9f46d07244b87fd6d700d0456d4358cfb67dc3cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,11 +65,12 @@ option(MGE_INFERENCE_ONLY "Build inference only library." OFF) option(MGE_WITH_MKLDNN "Enable Intel MKL_DNN support," ON) option(MGE_WITH_ROCM "Enable ROCM support" OFF) option(MGE_WITH_LARGE_ARCHIVE "Enable big archive link support" OFF) +option(MGE_BUILD_WITH_ASAN "Enable build with ASAN, need compiler support" OFF) if(MSVC OR WIN32) -message(STATUS "windows force cudnn static link") -set(MGE_WITH_CUDNN_SHARED OFF) + message(STATUS "windows force cudnn static link") + set(MGE_WITH_CUDNN_SHARED OFF) endif() if(MGE_WITH_NVRTC_STUB OR MGE_WITH_CUDA_STUB) @@ -90,14 +91,15 @@ if(NOT ${MGE_BIN_REDUCE} STREQUAL "") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -include ${MGE_BIN_REDUCE}") endif() -CHECK_CXX_COMPILER_FLAG("-ffunction-sections -fdata-sections -Wl,--gc-sections" CXX_FUNCTION_DATA_GC_SECTIONS_SUPPORT) - -if(CXX_FUNCTION_DATA_GC_SECTIONS_SUPPORT) - #mac or apple not support - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections") +if (NOT APPLE) + # check CXX_FUNCTION_DATA_GC_SECTIONS_SUPPORT on APPLE will leak cmake crash + CHECK_CXX_COMPILER_FLAG("-ffunction-sections -fdata-sections -Wl,--gc-sections" CXX_FUNCTION_DATA_GC_SECTIONS_SUPPORT) + if(CXX_FUNCTION_DATA_GC_SECTIONS_SUPPORT) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections") + endif() endif() check_ipo_supported(RESULT IS_LTO_SUPPORT OUTPUT output_info) @@ -181,13 +183,14 @@ if(${MGE_ARCH} STREQUAL "AUTO") endif() endif() -if((${MGE_ARCH} STREQUAL "x86_64" OR ${MGE_ARCH} STREQUAL "i386" OR ${MGE_ARCH} STREQUAL "armv7" OR ${MGE_ARCH} STREQUAL "aarch64") AND NOT APPLE) - option(MGE_ENABLE_CPUINFO "Build cpuinfo library for check runtime." ON) - if(MGE_ENABLE_CPUINFO) - message(STATUS "Enable cpuinfo runtime check and little kernel optimize.") - add_definitions(-DMGB_ENABLE_CPUINFO_CHECK) - include(cmake/cpuinfo.cmake) - endif() +if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.") + set(CMAKE_BUILD_TYPE RelWithDebInfo) +endif() + +if(${CMAKE_BUILD_TYPE} STREQUAL "Release" AND NOT MGE_WITH_TEST AND NOT ${MGE_ARCH} STREQUAL "x86_64") + set(MGE_ENABLE_RTTI OFF) + message(STATUS "disable MGE_ENABLE_RTTI when Release/NON-x86_64 mode!!") endif() if(MSVC OR WIN32) @@ -205,8 +208,42 @@ if(MSVC OR WIN32) if (NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang" AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang-cl") message(FATAL_ERROR "only support clang-cl for windows build, pls check detail: scripts/cmake-build/BUILD_README.md") endif() + # on windows need append VS_PATH/VC/Tools/Llvm/x64/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows + # and VS_PATH/VC/Tools/Llvm/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows to PATH env + if (MGE_BUILD_WITH_ASAN) + if("$ENV{VS_PATH}" STREQUAL "") + message(FATAL_ERROR "can not find VS_PATH, please export Visual Studio root dir to VS_PATH env") + endif() + if(${MGE_ARCH} STREQUAL "x86_64") + set(WINDOWS_ASAN_DLL_NAME "clang_rt.asan_dynamic-x86_64.lib") + set(WINDOWS_ASAN_RUNTIME_THUNK_NAME "clang_rt.asan_dynamic_runtime_thunk-x86_64") + set(WINDOWS_ASAN_PATH_SUFFIXES "VC/Tools/Llvm/x64/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows") + elseif(${MGE_ARCH} STREQUAL "i386") + set(WINDOWS_ASAN_DLL_NAME "clang_rt.asan_dynamic-i386.lib") + set(WINDOWS_ASAN_RUNTIME_THUNK_NAME "clang_rt.asan_dynamic_runtime_thunk-i386.lib") + set(WINDOWS_ASAN_PATH_SUFFIXES "VC/Tools/Llvm/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows") + else() + message(FATAL_ERROR "unsupport asan ARCH: ${MGE_ARCH} on Windows") + endif() + find_path(ASAN_DLL_PATH + NAMES ${WINDOWS_ASAN_DLL_NAME} + HINTS $ENV{VS_PATH} + PATH_SUFFIXES ${WINDOWS_ASAN_PATH_SUFFIXES} + DOC "Windows asan library path" ) + if(ASAN_DLL_PATH STREQUAL "ASAN_DLL_PATH-NOTFOUND") + message(FATAL_ERROR "can not find asan dll, please upgrade you LLVM") + endif() + + message(STATUS "Windows asan dll path: ${ASAN_DLL_PATH}") + link_directories(${ASAN_DLL_PATH}) + link_libraries(${WINDOWS_ASAN_DLL_NAME}) + link_libraries(${WINDOWS_ASAN_RUNTIME_THUNK_NAME}) + set(WIN_FLAGS "/Od -DNDEBUG -fsanitize=address") + else() + set(WIN_FLAGS "/O2") + endif() # add flags for enable sse instruction optimize for X86, enable avx header to compile avx code - set(WIN_FLAGS "-msse4.2 -O2 -D_AVX_ -D_AVX2_ -D__AVX__ -D__AVX2__ -D__FMA__") + set(WIN_FLAGS "${WIN_FLAGS} -msse4.2 -D_AVX_ -D_AVX2_ -D__AVX__ -D__AVX2__ -D__FMA__") # if u CPU is cascadelake series, u can enable for performance # set(WIN_FLAGS "{WIN_FLAGS} -march=cascadelake -mtune=cascadelake") # set(WIN_FLAGS "{WIN_FLAGS} -mavx512cd -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512vnni") @@ -233,14 +270,35 @@ if(MSVC OR WIN32) set(MGE_WITH_DISTRIBUTED OFF) else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") - if(ANDROID) - set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -DNDEBUG") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Ofast -DNDEBUG -g") + # NONE windows DEBUG general flags + if(MGE_BUILD_WITH_ASAN) + set(CMAKE_C_FLAGS_DEBUG "-O0 -g -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -fsanitize=address -fno-omit-frame-pointer") else() - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -DNDEBUG -g") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() + + # NONE windows opt general flags + if (MGE_BUILD_WITH_ASAN) + set(OPTIMIZE_LEVEL "-g -O0 -DNDEBUG -fsanitize=address -fno-omit-frame-pointer") + elseif(ANDROID) + set(OPTIMIZE_LEVEL "-g -Ofast -DNDEBUG") + else() + set(OPTIMIZE_LEVEL "-g -O3 -DNDEBUG") + endif() + set(CMAKE_C_FLAGS_RELEASE "${OPTIMIZE_LEVEL}") + set(CMAKE_CXX_FLAGS_RELEASE "${OPTIMIZE_LEVEL}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${OPTIMIZE_LEVEL}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${OPTIMIZE_LEVEL}") + #some gnu(gcc) compiler use -static -libasan have runtime issue + #also, when target is big, clang ld will take a long long long + #time when use -static-libsan, so we use dynamic asan by default + #ANDROID asan.so depends on log, so broadcast log link_libraries + #for megengine depends target, for example flatc target + if (MGE_BUILD_WITH_ASAN AND ANDROID) + link_libraries(log) endif() endif() @@ -353,11 +411,6 @@ if(NOT CMAKE_CUDA_HOST_COMPILER) set(CMAKE_CUDA_HOST_COMPILER $(CMAKE_CXX_COMPILER)) endif() -if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.") - set(CMAKE_BUILD_TYPE RelWithDebInfo) -endif() - if(NOT MGE_ENABLE_RTTI) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") endif() @@ -612,6 +665,16 @@ if(MGE_WITH_CUDA) endif() +###########please add_subdirectory from here############### +if((${MGE_ARCH} STREQUAL "x86_64" OR ${MGE_ARCH} STREQUAL "i386" OR ${MGE_ARCH} STREQUAL "armv7" OR ${MGE_ARCH} STREQUAL "aarch64") AND NOT APPLE) + option(MGE_ENABLE_CPUINFO "Build cpuinfo library for check runtime." ON) + if(MGE_ENABLE_CPUINFO) + message(STATUS "Enable cpuinfo runtime check and little kernel optimize.") + add_definitions(-DMGB_ENABLE_CPUINFO_CHECK) + include(cmake/cpuinfo.cmake) + endif() +endif() + if(MGE_WITH_CAMBRICON) include_directories("$ENV{NEUWARE_HOME}/include") link_directories("$ENV{NEUWARE_HOME}/lib64") @@ -734,6 +797,11 @@ ENDIF() set(MGB_JIT ${MGE_WITH_JIT}) set(MGB_JIT_MLIR ${MGE_WITH_JIT_MLIR}) set(MGB_JIT_HALIDE ${MGE_WITH_HALIDE}) +# for consumer override MGB_C_OPR_INIT_FUNC symbol interface +if(NOT "${CUSTOM_C_OPR_INIT_FUNC}" STREQUAL "") + add_compile_definitions(MGB_C_OPR_INIT_FUNC=${CUSTOM_C_OPR_INIT_FUNC}) + message(STATUS "override MGB_C_OPR_INIT_FUNC to ${CUSTOM_C_OPR_INIT_FUNC}") +endif() if(MSVC OR WIN32) set(CMAKE_HAVE_THREADS_LIBRARY 1) diff --git a/dnn/src/common/utils.cpp b/dnn/src/common/utils.cpp index 9e056791d3ab6ba1ad49556d7db45f9ee917d000..6f5c9f497863d2551d203b93a8e60c3e1b8a5c13 100644 --- a/dnn/src/common/utils.cpp +++ b/dnn/src/common/utils.cpp @@ -222,7 +222,8 @@ megcoreDeviceHandle_t megdnn::get_device_handle(Handle* handle) { megcoreDeviceHandle_t dev_handle; megcoreComputingHandle_t comp_handle = handle->megcore_computing_handle(); status = megcoreGetDeviceHandle(comp_handle, &dev_handle); - megdnn_assert(status == megcoreSuccess); + megdnn_throw_if(status != megcoreSuccess, megdnn_error, + "get device handle error!"); return dev_handle; } diff --git a/imperative/python/megengine/tools/svg_viewer.html b/imperative/python/megengine/tools/svg_viewer.html index 885091c17d44eb2b02bd7fc6054778c678867c31..d77c947cf7977e758004807f9bc387d959e6e5bd 100644 --- a/imperative/python/megengine/tools/svg_viewer.html +++ b/imperative/python/megengine/tools/svg_viewer.html @@ -20,14 +20,14 @@ var svgHeight = undefined; var loadDesc = (svgElem) => { - var mgeType = svgElem.attributes['mge:type']; + var mgeType = svgElem.attributes['tag:type']; if (mgeType === undefined) { return; } var elemList = []; for (attrName of svgElem.getAttributeNames()) { - var prefix = 'mge:'; + var prefix = 'tag:'; if (!attrName.startsWith(prefix)) { continue; } @@ -57,7 +57,7 @@ return; } svgElem.onmousedown = e => { - var mgeType = svgElem.attributes['mge:type']; + var mgeType = svgElem.attributes['tag:type']; if (mgeType === undefined) { return; } @@ -151,4 +151,4 @@ - \ No newline at end of file + diff --git a/scripts/cmake-build/cross_build_android_arm_inference.sh b/scripts/cmake-build/cross_build_android_arm_inference.sh index d3825a797f8765f7a9e86b9a84ae179f7635c5d5..f8cbe310b742dfd009c3828877a52453f38d6c90 100755 --- a/scripts/cmake-build/cross_build_android_arm_inference.sh +++ b/scripts/cmake-build/cross_build_android_arm_inference.sh @@ -9,6 +9,7 @@ ARCH=arm64-v8a REMOVE_OLD_BUILD=false NINJA_VERBOSE=OFF NINJA_DRY_RUN=OFF +SPECIFIED_TARGET="install/strip" echo "EXTRA_CMAKE_ARGS: ${EXTRA_CMAKE_ARGS}" @@ -22,13 +23,14 @@ function usage() { echo "-r : remove old build dir before make, default off" echo "-v : ninja with verbose and explain, default off" echo "-n : ninja with -n dry run (don't run commands but act like they succeeded)" + echo "-e : build a specified target (always for debug, NOTICE: do not do strip/install target when use -k)" echo "-h : show usage" echo "append other cmake config by export EXTRA_CMAKE_ARGS=..." echo "example: $0 -d" exit -1 } -while getopts "nvrkhdfa:" arg +while getopts "nvrkhdfa:e:" arg do case $arg in d) @@ -75,6 +77,9 @@ do echo "config NINJA_DRY_RUN=ON" NINJA_DRY_RUN=ON ;; + e) + SPECIFIED_TARGET=$OPTARG + ;; ?) echo "unkonw argument" usage @@ -86,6 +91,7 @@ echo "build config summary:" echo "BUILD_TYPE: $BUILD_TYPE" echo "MGE_ARMV8_2_FEATURE_FP16: $MGE_ARMV8_2_FEATURE_FP16" echo "MGE_DISABLE_FLOAT16: $MGE_DISABLE_FLOAT16" +echo "SPECIFIED_TARGET: ${SPECIFIED_TARGET}" echo "ARCH: $ARCH" echo "----------------------------------------------------" @@ -107,7 +113,11 @@ if [ -z $NDK_ROOT ];then fi function cmake_build() { - BUILD_DIR=$SRC_DIR/build_dir/android/$1/$BUILD_TYPE/build + if [ $1 = "armeabi-v7a with NEON" ] ;then + BUILD_DIR=$SRC_DIR/build_dir/android/armeabi-v7a/$BUILD_TYPE/build + else + BUILD_DIR=$SRC_DIR/build_dir/android/$1/$BUILD_TYPE/build + fi INSTALL_DIR=$BUILD_DIR/../install BUILD_ABI=$1 BUILD_NATIVE_LEVEL=$2 @@ -127,7 +137,7 @@ function cmake_build() { -DCMAKE_TOOLCHAIN_FILE="$NDK_ROOT/build/cmake/android.toolchain.cmake" \ -DANDROID_NDK="$NDK_ROOT" \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ - -DANDROID_ABI=$BUILD_ABI \ + -DANDROID_ABI=\"$BUILD_ABI\" \ -DANDROID_NATIVE_API_LEVEL=$BUILD_NATIVE_LEVEL \ -DMGE_INFERENCE_ONLY=ON \ -DMGE_WITH_CUDA=OFF \ @@ -137,9 +147,8 @@ function cmake_build() { ${EXTRA_CMAKE_ARGS} \ $SRC_DIR " - config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "" ${NINJA_DRY_RUN} + config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "${SPECIFIED_TARGET}" ${NINJA_DRY_RUN} bash -c "${NINJA_CMD}" - ${NINJA_BASE} install/strip } build_flatc $SRC_DIR $REMOVE_OLD_BUILD diff --git a/scripts/cmake-build/cross_build_ios_arm_inference.sh b/scripts/cmake-build/cross_build_ios_arm_inference.sh index 55c3e75a07ce2ee2394f93cd2c81892d81384435..467a6e0cb150fd1a10f5b0eda71c3e62dde2e40a 100755 --- a/scripts/cmake-build/cross_build_ios_arm_inference.sh +++ b/scripts/cmake-build/cross_build_ios_arm_inference.sh @@ -9,6 +9,7 @@ ARCH=arm64 REMOVE_OLD_BUILD=false NINJA_VERBOSE=OFF NINJA_DRY_RUN=OFF +SPECIFIED_TARGET="install" echo "EXTRA_CMAKE_ARGS: ${EXTRA_CMAKE_ARGS}" @@ -22,13 +23,14 @@ function usage() { echo "-r : remove old build dir before make, default off" echo "-v : ninja with verbose and explain, default off" echo "-n : ninja with -n dry run (don't run commands but act like they succeeded)" + echo "-e : build a specified target (always for debug, NOTICE: do not do strip/install target when use -k)" echo "-h : show usage" echo "append other cmake config by export EXTRA_CMAKE_ARGS=..." echo "example: $0 -d" exit -1 } -while getopts "nvrkhdfa:" arg +while getopts "nvrkhdfa:e:" arg do case $arg in d) @@ -75,6 +77,9 @@ do echo "config NINJA_DRY_RUN=ON" NINJA_DRY_RUN=ON ;; + e) + SPECIFIED_TARGET=$OPTARG + ;; ?) echo "unkonw argument" usage @@ -86,6 +91,7 @@ echo "build config summary:" echo "BUILD_TYPE: $BUILD_TYPE" echo "MGE_ARMV8_2_FEATURE_FP16: $MGE_ARMV8_2_FEATURE_FP16" echo "MGE_DISABLE_FLOAT16: $MGE_DISABLE_FLOAT16" +echo "SPECIFIED_TARGET: ${SPECIFIED_TARGET}" echo "ARCH: $ARCH" echo "----------------------------------------------------" @@ -139,7 +145,7 @@ function cmake_build() { ${EXTRA_CMAKE_ARGS} \ $SRC_DIR " - config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "install" ${NINJA_DRY_RUN} + config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "${SPECIFIED_TARGET}" ${NINJA_DRY_RUN} bash -c "${NINJA_CMD}" } diff --git a/scripts/cmake-build/cross_build_linux_arm_inference.sh b/scripts/cmake-build/cross_build_linux_arm_inference.sh index a5ce1be0cafe549178636162e77983f2d9c654d1..a7acbb37a57fcae3eea288244551968072394784 100755 --- a/scripts/cmake-build/cross_build_linux_arm_inference.sh +++ b/scripts/cmake-build/cross_build_linux_arm_inference.sh @@ -10,6 +10,7 @@ ARCH=arm64-v8a REMOVE_OLD_BUILD=false NINJA_VERBOSE=OFF NINJA_DRY_RUN=OFF +SPECIFIED_TARGET="install/strip" CMAKE_C_FLAGS="-Wno-psabi" CMAKE_CXX_FLAGS="-Wno-psabi" @@ -26,13 +27,14 @@ function usage() { echo "-r : remove old build dir before make, default off" echo "-v : ninja with verbose and explain, default off" echo "-n : ninja with -n dry run (don't run commands but act like they succeeded)" + echo "-e : build a specified target (always for debug, NOTICE: do not do strip/install target when use -k)" echo "-h : show usage" echo "append other cmake config by export EXTRA_CMAKE_ARGS=..." echo "example: $0 -d" exit -1 } -while getopts "nvrkhdcfa:" arg +while getopts "nvrkhdcfa:e:" arg do case $arg in d) @@ -83,6 +85,9 @@ do echo "config NINJA_DRY_RUN=ON" NINJA_DRY_RUN=ON ;; + e) + SPECIFIED_TARGET=$OPTARG + ;; ?) echo "unkonw argument" usage @@ -95,6 +100,7 @@ echo "BUILD_TYPE: $BUILD_TYPE" echo "MGE_WITH_CUDA: $MGE_WITH_CUDA" echo "MGE_ARMV8_2_FEATURE_FP16: $MGE_ARMV8_2_FEATURE_FP16" echo "MGE_DISABLE_FLOAT16: $MGE_DISABLE_FLOAT16" +echo "SPECIFIED_TARGET: ${SPECIFIED_TARGET}" echo "ARCH: $ARCH" echo "----------------------------------------------------" @@ -155,7 +161,7 @@ function cmake_build() { ${EXTRA_CMAKE_ARGS} \ $SRC_DIR " - config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "install/strip" ${NINJA_DRY_RUN} + config_ninja_target_cmd ${NINJA_VERBOSE} "OFF" "${SPECIFIED_TARGET}" ${NINJA_DRY_RUN} bash -c "${NINJA_CMD}" } diff --git a/scripts/cmake-build/host_build.sh b/scripts/cmake-build/host_build.sh index 6379aa14125016eb2051f3b26162f0987ab68d9f..d2922a110843aee7e9de6ea494b3333b194e0c4e 100755 --- a/scripts/cmake-build/host_build.sh +++ b/scripts/cmake-build/host_build.sh @@ -12,12 +12,15 @@ function usage() { echo "-v : ninja with verbose and explain, default off" echo "-s : Do not build develop even build with training mode, default on when build with training, always for wheel" echo "-n : ninja with -n dry run (don't run commands but act like they succeeded)" + echo "-e : build a specified target (always for debug, NOTICE: do not do strip/install target when use -k)" echo "-h : show usage" echo "append other cmake config by export EXTRA_CMAKE_ARGS=..." echo "example: $0 -d" exit -1 } +READLINK=readlink +OS=$(uname -s) BUILD_TYPE=Release MGE_WITH_CUDA=OFF MGE_INFERENCE_ONLY=ON @@ -28,10 +31,15 @@ REMOVE_OLD_BUILD=false NINJA_VERBOSE=OFF BUILD_DEVELOP=ON NINJA_DRY_RUN=OFF +SPECIFIED_TARGET="install/strip" +if [[ $OS =~ "NT" ]]; then + echo "Windows do not support strip/install by defaut" + SPECIFIED_TARGET="" +fi echo "EXTRA_CMAKE_ARGS: ${EXTRA_CMAKE_ARGS}" -while getopts "nsrhdctmv" arg +while getopts "nsrhdctmve:" arg do case $arg in d) @@ -72,6 +80,9 @@ do MGE_WINDOWS_BUILD_MARCH=m32 MGE_ARCH=i386 ;; + e) + SPECIFIED_TARGET=$OPTARG + ;; ?) echo "unkonw argument" usage @@ -83,9 +94,8 @@ echo "build config summary:" echo "BUILD_TYPE: $BUILD_TYPE" echo "MGE_WITH_CUDA: $MGE_WITH_CUDA" echo "MGE_INFERENCE_ONLY: $MGE_INFERENCE_ONLY" +echo "SPECIFIED_TARGET: ${SPECIFIED_TARGET}" echo "------------------------------------" -READLINK=readlink -OS=$(uname -s) if [ $OS = "Darwin" ];then READLINK=greadlink @@ -131,7 +141,7 @@ function cmake_build() { ${EXTRA_CMAKE_ARGS} \ ${SRC_DIR} " - config_ninja_target_cmd ${NINJA_VERBOSE} ${BUILD_DEVELOP} "install/strip" ${NINJA_DRY_RUN} + config_ninja_target_cmd ${NINJA_VERBOSE} ${BUILD_DEVELOP} "${SPECIFIED_TARGET}" ${NINJA_DRY_RUN} bash -c "${NINJA_CMD}" } @@ -260,7 +270,7 @@ function cmake_build_windows() { -DCMAKE_MAKE_PROGRAM=ninja.exe \ ${EXTRA_CMAKE_ARGS} ../../.. " - config_ninja_target_cmd ${NINJA_VERBOSE} ${BUILD_DEVELOP} "" ${NINJA_DRY_RUN} + config_ninja_target_cmd ${NINJA_VERBOSE} ${BUILD_DEVELOP} "${SPECIFIED_TARGET}" ${NINJA_DRY_RUN} cmd.exe /c " vcvarsall.bat $MGE_WINDOWS_BUILD_ARCH && ${NINJA_CMD} " } diff --git a/scripts/cmake-build/utils/utils.sh b/scripts/cmake-build/utils/utils.sh index 35fe7ebf0afd222ae07b95f26665ee3cd0d026de..e6977b098b3b92affd68b68afdee68e0924e0733 100755 --- a/scripts/cmake-build/utils/utils.sh +++ b/scripts/cmake-build/utils/utils.sh @@ -69,16 +69,22 @@ function try_remove_old_build() { } function config_ninja_target_cmd() { - NINJA_CMD="${NINJA_BASE} all" if [ $# -eq 4 ]; then _NINJA_VERBOSE=$1 _BUILD_DEVELOP=$2 - _INSTALL_ALL_TARGET=$3 + _NINJA_TARGET=$3 _NINJA_DRY_RUN=$4 else echo "err call config_ninja_target_cmd" exit -1 fi + if [ -z "${_NINJA_TARGET}" ]; then + NINJA_CMD="${NINJA_BASE} all" + elif [[ ${_NINJA_TARGET} =~ "install" ]]; then + NINJA_CMD="${NINJA_BASE} all && ${NINJA_BASE} ${_NINJA_TARGET}" + else + NINJA_CMD="${NINJA_BASE} ${_NINJA_TARGET}" + fi if [ ${_NINJA_DRY_RUN} = "ON" ]; then NINJA_CMD="${NINJA_CMD} -d explain -n" @@ -90,9 +96,6 @@ function config_ninja_target_cmd() { echo "add develop target" NINJA_CMD="${NINJA_CMD} && ${NINJA_BASE} develop" fi - if [ -n "${_INSTALL_ALL_TARGET}" ]; then - NINJA_CMD="${NINJA_CMD} && ${NINJA_BASE} ${_INSTALL_ALL_TARGET}" - fi fi echo "build ${NINJA_BASE} target command: ${NINJA_CMD}" diff --git a/src/core/impl/common.cpp b/src/core/impl/common.cpp index 805f90ff6d858134ad02faedd5055b0caac7b2ef..edf21dd1a26d7dda9b2c267b4e62f791c9e14803 100644 --- a/src/core/impl/common.cpp +++ b/src/core/impl/common.cpp @@ -223,7 +223,7 @@ enum class LogLevel { kInfo, kWarn, kDebug, kFatal }; void Log(LogLevel level, char const* file, int line, char const* func, char const *fmt, ...) { - std::string new_fmt("[megwave] "); + std::string new_fmt("[wave] "); new_fmt.append(fmt); va_list ap; va_start(ap, fmt); diff --git a/src/plugin/impl/static_mem_record.cpp b/src/plugin/impl/static_mem_record.cpp index cb228569870685c687338d0bb20e9ac00d096f23..69803953453b4e75463ddda3a977ed52a9b2500e 100644 --- a/src/plugin/impl/static_mem_record.cpp +++ b/src/plugin/impl/static_mem_record.cpp @@ -31,10 +31,10 @@ const std::string polyline = ""; const std::string opr_info = - "mge:type=\"opr\" mge:id=\"{}\" mge:size=\"{}\" mge:name=\"{}\""; + "tag:type=\"opr\" tag:id=\"{}\" tag:size=\"{}\" tag:name=\"{}\""; const std::string chunk_info = - "mge:type=\"chunk\" mge:id=\"{}\" mge:time=\"{}\" mge:addr=\"{}\" " - "mge:size=\"{}\" mge:owner_var_name=\"{}\""; + "tag:type=\"chunk\" tag:id=\"{}\" tag:time=\"{}\" tag:addr=\"{}\" " + "tag:size=\"{}\" tag:owner_var_name=\"{}\""; const std::string animate = "\n> StaticMemRecorder::get_chunk_construct( } } return chunk_ids; -} \ No newline at end of file +} diff --git a/src/serialization/impl/serializer_oss.cpp b/src/serialization/impl/serializer_oss.cpp index 393e38bf332ae509f27da4cfae3580f458089754..d2c0324c837422130b9078234804cf2688c99c50 100644 --- a/src/serialization/impl/serializer_oss.cpp +++ b/src/serialization/impl/serializer_oss.cpp @@ -729,9 +729,9 @@ void GraphLoaderOSS::OprLoadContextImpl::load_single_opr( auto registry = OprRegistry::find_by_unversioned_id(fbopr->type_id()); mgb_throw_if(!registry, SerializationError, - "failed to find opr with type %s, use " - "mgb.config.dump_registered_oprs() " - "to get a dict that maps from opr id to opr name", + "failed to find opr with type %s, use python env " + "config.dump_registered_oprs() to get a dict that maps from " + "opr id to opr name", std::to_string(fbopr->type_id()).c_str()); // load inputs @@ -812,7 +812,7 @@ GraphLoader::LoadResult GraphLoaderOSS::load(const LoadConfig& config, uint32_t magic; m_file->read(&magic, sizeof(magic)); mgb_throw_if(magic != MGB_MAGIC, SerializationError, - "wrong magic: wanted %#08x, actual %#08x (not a MegBrain fbs " + "wrong magic: wanted %#08x, actual %#08x (not a invalid fbs " "model?)", MGB_MAGIC, magic); m_file->skip(4); @@ -833,7 +833,7 @@ GraphLoader::LoadResult GraphLoaderOSS::load(const LoadConfig& config, m_file->skip(tensor_begin); mgb_throw_if(!fbs::GraphBufferHasIdentifier(m_graph_buf.data()), - SerializationError, "not a MegBrain fbs model"); + SerializationError, "invalid fbs model"); { flatbuffers::Verifier verifier( @@ -847,7 +847,7 @@ GraphLoader::LoadResult GraphLoaderOSS::load(const LoadConfig& config, m_mgb_version = m_graph->mgb_version(); if (m_graph->mgb_version() > MGB_VERSION) { mgb_log_warn( - "loading model from future MegBrain: version=%u " + "loading model from future runtime: version=%u " "model_version=%u", MGB_VERSION, m_graph->mgb_version()); }