You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cross_build_ios_arm_inference.sh 4.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #!/usr/bin/env bash
  2. set -e
  3. ARCHS=("arm64" "armv7")
  4. BUILD_TYPE=Release
  5. MGE_ARMV8_2_FEATURE_FP16=OFF
  6. MGE_ARMV8_2_FEATURE_DOTPROD=OFF
  7. MGE_DISABLE_FLOAT16=OFF
  8. ARCH=arm64
  9. REMOVE_OLD_BUILD=false
  10. echo "EXTRA_CMAKE_ARGS: ${EXTRA_CMAKE_ARGS}"
  11. function usage() {
  12. echo "$0 args1 args2 .."
  13. echo "available args detail:"
  14. echo "-d : Build with Debug mode, default Release mode"
  15. echo "-f : enable MGE_ARMV8_2_FEATURE_FP16 for ARM64, need toolchain and hardware support"
  16. echo "-p : enable MGE_ARMV8_2_FEATURE_DOTPROD for ARM64, need toolchain and hardware support"
  17. echo "-k : open MGE_DISABLE_FLOAT16 for NEON "
  18. echo "-a : config build arch available: ${ARCHS[@]}"
  19. echo "-r : remove old build dir before make, default off"
  20. echo "-h : show usage"
  21. echo "append other cmake config by export EXTRA_CMAKE_ARGS=..."
  22. echo "example: $0 -d"
  23. exit -1
  24. }
  25. while getopts "rkhdfpa:" arg
  26. do
  27. case $arg in
  28. d)
  29. echo "Build with Debug mode"
  30. BUILD_TYPE=Debug
  31. ;;
  32. f)
  33. echo "enable MGE_ARMV8_2_FEATURE_FP16 for ARM64"
  34. MGE_ARMV8_2_FEATURE_FP16=ON
  35. ;;
  36. p)
  37. echo "enable MGE_ARMV8_2_FEATURE_DOTPROD for ARM64"
  38. MGE_ARMV8_2_FEATURE_DOTPROD=ON
  39. ;;
  40. k)
  41. echo "open MGE_DISABLE_FLOAT16 for NEON"
  42. MGE_DISABLE_FLOAT16=ON
  43. ;;
  44. a)
  45. tmp_arch=null
  46. for arch in ${ARCHS[@]}; do
  47. if [ "$arch" = "$OPTARG" ]; then
  48. echo "CONFIG BUILD ARCH to : $OPTARG"
  49. tmp_arch=$OPTARG
  50. ARCH=$OPTARG
  51. break
  52. fi
  53. done
  54. if [ "$tmp_arch" = "null" ]; then
  55. echo "ERR args for arch (-a)"
  56. echo "available arch list: ${ARCHS[@]}"
  57. usage
  58. fi
  59. ;;
  60. h)
  61. echo "show usage"
  62. usage
  63. ;;
  64. r)
  65. echo "config REMOVE_OLD_BUILD=true"
  66. REMOVE_OLD_BUILD=true
  67. ;;
  68. ?)
  69. echo "unkonw argument"
  70. usage
  71. ;;
  72. esac
  73. done
  74. echo "----------------------------------------------------"
  75. echo "build config summary:"
  76. echo "BUILD_TYPE: $BUILD_TYPE"
  77. echo "MGE_ARMV8_2_FEATURE_FP16: $MGE_ARMV8_2_FEATURE_FP16"
  78. echo "MGE_ARMV8_2_FEATURE_DOTPROD: $MGE_ARMV8_2_FEATURE_DOTPROD"
  79. echo "MGE_DISABLE_FLOAT16: $MGE_DISABLE_FLOAT16"
  80. echo "ARCH: $ARCH"
  81. echo "----------------------------------------------------"
  82. READLINK=readlink
  83. OS=$(uname -s)
  84. if [ $OS = "Darwin" ];then
  85. READLINK=greadlink
  86. else
  87. echo "cross build ios only support on macos, abort now!!"
  88. exit -1
  89. fi
  90. SRC_DIR=$($READLINK -f "`dirname $0`/../../")
  91. source $SRC_DIR/scripts/cmake-build/utils/utils.sh
  92. function cmake_build() {
  93. BUILD_DIR=$SRC_DIR/build_dir/apple/$3/$4/$1/$BUILD_TYPE/build
  94. INSTALL_DIR=$BUILD_DIR/../install
  95. TOOLCHAIN=$SRC_DIR/toolchains/$2
  96. OS_PLATFORM=$3
  97. XCODE_IOS_PLATFORM=$4
  98. IOS_ARCH=$1
  99. echo "build dir: $BUILD_DIR"
  100. echo "install dir: $INSTALL_DIR"
  101. echo "build type: $BUILD_TYPE"
  102. echo "build toolchain: $TOOLCHAIN"
  103. echo "build OS_PLATFORM: $OS_PLATFORM"
  104. echo "build XCODE_IOS_PLATFORM: $XCODE_IOS_PLATFORM"
  105. echo "build IOS_ARCH: $IOS_ARCH"
  106. try_remove_old_build $REMOVE_OLD_BUILD $BUILD_DIR $INSTALL_DIR
  107. echo "create build dir"
  108. mkdir -p $BUILD_DIR
  109. mkdir -p $INSTALL_DIR
  110. cd $BUILD_DIR
  111. cmake -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \
  112. -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
  113. -DIOS_TOOLCHAIN_ROOT=$TOOLCHAIN \
  114. -DOS_PLATFORM=$OS_PLATFORM \
  115. -DXCODE_IOS_PLATFORM=$XCODE_IOS_PLATFORM \
  116. -DIOS_ARCH=$IOS_ARCH \
  117. -DMGE_INFERENCE_ONLY=ON \
  118. -DPYTHON_EXECUTABLE=/usr/local/bin/python3 \
  119. -DMGE_WITH_CUDA=OFF \
  120. -DMGE_ARMV8_2_FEATURE_FP16= $MGE_ARMV8_2_FEATURE_FP16 \
  121. -DMGE_ARMV8_2_FEATURE_DOTPROD=$MGE_ARMV8_2_FEATURE_DOTPROD \
  122. -DMGE_DISABLE_FLOAT16=$MGE_DISABLE_FLOAT16 \
  123. -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
  124. ${EXTRA_CMAKE_ARGS} \
  125. $SRC_DIR
  126. make -j$(nproc)
  127. make install
  128. }
  129. build_flatc $SRC_DIR $REMOVE_OLD_BUILD
  130. # refs for ../../toolchains/ios.toolchain.cmake
  131. # to config this, if u want to build other,
  132. # like simulator or for iwatch, please do manually modify
  133. # OS_PLATFORM=("OS" "OS64" "SIMULATOR" "SIMULATOR64" "TVOS" "WATCHOS" "SIMULATOR_TVOS")
  134. # XCODE_IOS_PLATFORM=("iphoneos" "iphonesimulator" "appletvos" "appletvsimulator" "watchos", "watchsimulator")
  135. # IOS_ARCHS=("arm64" "armv7" "armv7k" "arm64e" "armv7s")
  136. #by defaut we only triger build arm64/armv7 for iphoneos
  137. OS_PLATFORM=OS
  138. XCODE_IOS_PLATFORM=iphoneos
  139. cmake_build $ARCH ios.toolchain.cmake $OS_PLATFORM $XCODE_IOS_PLATFORM

MegEngine 安装包中集成了使用 GPU 运行代码所需的 CUDA 环境,不用区分 CPU 和 GPU 版。 如果想要运行 GPU 程序,请确保机器本身配有 GPU 硬件设备并安装好驱动。 如果你想体验在云端 GPU 算力平台进行深度学习开发的感觉,欢迎访问 MegStudio 平台