* add asan build option
* fix cpuinfo build opt level
* fix host release build with out debug info
* opt "fix lite bazel/cmake symbols MR"
* other misc build opt
GitOrigin-RevId: 6ca286e195
tags/v1.5.0
| @@ -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) | |||
| @@ -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; | |||
| } | |||
| @@ -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 @@ | |||
| <input type='file' id='fileInput' style="position: fixed; top: 0; background-color: white;"></input> | |||
| </body> | |||
| </html> | |||
| </html> | |||
| @@ -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 | |||
| @@ -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}" | |||
| } | |||
| @@ -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}" | |||
| } | |||
| @@ -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} " | |||
| } | |||
| @@ -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}" | |||
| @@ -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); | |||
| @@ -31,10 +31,10 @@ const std::string polyline = | |||
| "<polyline points=\"{}\" style=\"fill:none;stroke:{};stroke-width:{}\" " | |||
| "/>"; | |||
| 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 = | |||
| "<animate attributeName=\"opacity\" from=\"0\" to=\"1\" " | |||
| "begin=\"{}.mouseover\" fill=\"freeze\" dur=\"1s\"/>\n<animate " | |||
| @@ -316,4 +316,4 @@ std::vector<std::vector<size_t>> StaticMemRecorder::get_chunk_construct( | |||
| } | |||
| } | |||
| return chunk_ids; | |||
| } | |||
| } | |||
| @@ -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()); | |||
| } | |||