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.8 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. rm -rf ${BUILD_DIR}
  57. else
  58. echo "strip remove old build"
  59. fi
  60. }
  61. function config_ninja_target_cmd() {
  62. if [ $# -eq 5 ]; then
  63. _NINJA_VERBOSE=$1
  64. _BUILD_DEVELOP=$2
  65. _NINJA_TARGET=$3
  66. _NINJA_DRY_RUN=$4
  67. _NINJA_MAX_JOBS=$5
  68. else
  69. echo "err call config_ninja_target_cmd"
  70. exit -1
  71. fi
  72. if [ -z "${_NINJA_TARGET}" ]; then
  73. NINJA_CMD="${NINJA_BASE} all -j ${_NINJA_MAX_JOBS}"
  74. else
  75. NINJA_CMD="${NINJA_BASE} ${_NINJA_TARGET} -j ${_NINJA_MAX_JOBS}"
  76. fi
  77. if [ ${_NINJA_DRY_RUN} = "ON" ]; then
  78. if [[ "${NINJA_CMD}" =~ "&" ]]; then
  79. echo "code issue happened!!! base cmd can not include & before ninja explain"
  80. echo "now cmd: ${NINJA_CMD}"
  81. exit -1
  82. fi
  83. NINJA_CMD="${NINJA_CMD} -d explain -n"
  84. else
  85. if [ ${_NINJA_VERBOSE} = "ON" ]; then
  86. if [[ "${NINJA_CMD}" =~ "&" ]]; then
  87. echo "code issue happened!!! base cmd can not include & before ninja explain"
  88. echo "now cmd: ${NINJA_CMD}"
  89. exit -1
  90. fi
  91. NINJA_CMD="${NINJA_CMD} -d explain -v"
  92. fi
  93. if [ ${_BUILD_DEVELOP} = "ON" ]; then
  94. echo "add develop target"
  95. NINJA_CMD="${NINJA_CMD} && ${NINJA_BASE} develop"
  96. fi
  97. fi
  98. echo "build ${NINJA_BASE} target command: ${NINJA_CMD}"
  99. }
  100. function show_cmakelist_options() {
  101. cd ${PROJECT_DIR}
  102. grep "option(" lite/CMakeLists.txt CMakeLists.txt --color
  103. cd - > /dev/null
  104. }
  105. function config_ninja_default_max_jobs() {
  106. # plus 2 is ninja default behavior, you can run ninja -h to verify
  107. # but at Windows env, default max jobs will take 100% cpu, which may lead
  108. # to some Windows OS issue sometimes, eg, OpenSSH server lost respond or vcvarsall.bat
  109. # setenv failed etc(especially enable CUDA). I have no idea about this Windows OS issue.
  110. # as a workaround: config default NINJA_MAX_JOBS to cpu_number - 1
  111. if [[ $OS =~ "NT" ]]; then
  112. ((NINJA_MAX_JOBS = ${cpu_number} - 1))
  113. if [[ ${NINJA_MAX_JOBS} -le 0 ]]; then
  114. NINJA_MAX_JOBS=1
  115. fi
  116. else
  117. ((NINJA_MAX_JOBS = ${cpu_number} + 2))
  118. fi
  119. echo "config default NINJA_MAX_JOBS to ${NINJA_MAX_JOBS} [cpu number is:${cpu_number}]"
  120. }

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