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.

utils.sh 3.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #!/usr/bin/env bash
  2. set -e
  3. OS=$(uname -s)
  4. NINJA_CMD=""
  5. NINJA_BASE="ninja"
  6. cpu_number=`nproc`
  7. NINJA_MAX_JOBS=0
  8. if [[ $OS =~ "NT" ]]; then
  9. echo "BUILD in NT ..."
  10. NINJA_BASE="Ninja"
  11. fi
  12. READLINK=readlink
  13. if [ $OS = "Darwin" ];then
  14. READLINK=greadlink
  15. fi
  16. PROJECT_DIR=$(dirname "${BASH_SOURCE[0]}")/../../..
  17. function cd_real_build_dir() {
  18. REAL_DIR=$($READLINK -f $1)
  19. echo "may alias dir: $1"
  20. echo "cd real build dir: ${REAL_DIR}"
  21. cd ${REAL_DIR}
  22. }
  23. function build_flatc() {
  24. BUILD_DIR=$1/build_dir/host_flatc/build
  25. INSTALL_DIR=$BUILD_DIR/../install
  26. REMOVE_OLD_BUILD=$2
  27. if [ $REMOVE_OLD_BUILD = "true" ]; then
  28. echo "remove old build/install dir"
  29. rm -rf $INSTALL_DIR
  30. rm -rf $BUILD_DIR
  31. else
  32. echo "strip remove old build"
  33. fi
  34. mkdir -p $BUILD_DIR
  35. mkdir -p $INSTALL_DIR
  36. cd_real_build_dir $BUILD_DIR
  37. cmake -G Ninja \
  38. -DCMAKE_BUILD_TYPE=Release \
  39. -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
  40. -DFLATBUFFERS_BUILD_TESTS=OFF \
  41. -DFLATBUFFERS_BUILD_FLATHASH=OFF \
  42. -DFLATBUFFERS_BUILD_FLATLIB=OFF \
  43. -DFLATBUFFERS_LIBCXX_WITH_CLANG=OFF \
  44. ${PROJECT_DIR}/third_party/flatbuffers
  45. ${NINJA_BASE} all
  46. ${NINJA_BASE} install/strip
  47. }
  48. function try_remove_old_build() {
  49. REMOVE_OLD_BUILD=$1
  50. echo $REMOVE_OLD_BUILD
  51. BUILD_DIR=$2
  52. INSTALL_DIR=$3
  53. if [ $REMOVE_OLD_BUILD = "true" ]; then
  54. echo "remove old build/install dir"
  55. rm -rf ${INSTALL_DIR}
  56. # compat install is relative path for BUILD_DIR
  57. if [ -d ${BUILD_DIR} ]; then
  58. cd ${BUILD_DIR}
  59. rm -rf ${INSTALL_DIR}
  60. cd -
  61. fi
  62. rm -rf ${BUILD_DIR}
  63. else
  64. echo "strip remove old build"
  65. fi
  66. }
  67. function config_ninja_target_cmd() {
  68. if [ $# -eq 5 ]; then
  69. _NINJA_VERBOSE=$1
  70. _BUILD_DEVELOP=$2
  71. _NINJA_TARGET=$3
  72. _NINJA_DRY_RUN=$4
  73. _NINJA_MAX_JOBS=$5
  74. else
  75. echo "err call config_ninja_target_cmd"
  76. exit -1
  77. fi
  78. if [ -z "${_NINJA_TARGET}" ]; then
  79. NINJA_CMD="${NINJA_BASE} all -j ${_NINJA_MAX_JOBS}"
  80. elif [[ ${_NINJA_TARGET} =~ "install" ]]; then
  81. NINJA_CMD="${NINJA_BASE} all -j ${_NINJA_MAX_JOBS} && ${NINJA_BASE} ${_NINJA_TARGET}"
  82. else
  83. NINJA_CMD="${NINJA_BASE} ${_NINJA_TARGET} -j ${_NINJA_MAX_JOBS}"
  84. fi
  85. if [ ${_NINJA_DRY_RUN} = "ON" ]; then
  86. NINJA_CMD="${NINJA_CMD} -d explain -n"
  87. else
  88. if [ ${_NINJA_VERBOSE} = "ON" ]; then
  89. NINJA_CMD="${NINJA_CMD} -d explain -v"
  90. fi
  91. if [ ${_BUILD_DEVELOP} = "ON" ]; then
  92. echo "add develop target"
  93. NINJA_CMD="${NINJA_CMD} && ${NINJA_BASE} develop"
  94. fi
  95. fi
  96. echo "build ${NINJA_BASE} target command: ${NINJA_CMD}"
  97. }
  98. function show_cmakelist_options() {
  99. cd ${PROJECT_DIR}
  100. grep "option(" lite/CMakeLists.txt CMakeLists.txt --color
  101. cd - > /dev/null
  102. }
  103. function config_ninja_default_max_jobs() {
  104. # plus 2 is ninja default behavior, you can run ninja -h to verify
  105. # but at Windows env, default max jobs will take 100% cpu, which may lead
  106. # to some Windows OS issue sometimes, eg, OpenSSH server lost respond or vcvarsall.bat
  107. # setenv failed etc(especially enable CUDA). I have no idea about this Windows OS issue.
  108. # as a workaround: config default NINJA_MAX_JOBS to cpu_number - 1
  109. if [[ $OS =~ "NT" ]]; then
  110. ((NINJA_MAX_JOBS = ${cpu_number} - 1))
  111. if [[ ${NINJA_MAX_JOBS} -le 0 ]]; then
  112. NINJA_MAX_JOBS=1
  113. fi
  114. else
  115. ((NINJA_MAX_JOBS = ${cpu_number} + 2))
  116. fi
  117. echo "config default NINJA_MAX_JOBS to ${NINJA_MAX_JOBS} [cpu number is:${cpu_number}]"
  118. }

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