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 4.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/usr/bin/env bash
  2. set -e
  3. OS=$(uname -s)
  4. docker_file=""
  5. function config_docker_file() {
  6. case $(uname -m) in
  7. x86_64) docker_file=Dockerfile ;;
  8. aarch64) docker_file=Dockerfile_aarch64 ;;
  9. *) echo "nonsupport env!!!";exit -1 ;;
  10. esac
  11. }
  12. function ninja_dry_run_and_check_increment() {
  13. if [ $# -eq 3 ]; then
  14. _BUILD_SHELL=$1
  15. _BUILD_FLAGS="$2 -n"
  16. _INCREMENT_KEY_WORDS=$3
  17. else
  18. echo "err call ninja_dry_run_and_check_increment"
  19. exit -1
  20. fi
  21. ${_BUILD_SHELL} ${_BUILD_FLAGS} 2>&1 | tee dry_run.log
  22. DIRTY_LOG=`cat dry_run.log`
  23. if [[ "${DIRTY_LOG}" =~ ${_INCREMENT_KEY_WORDS} ]]; then
  24. echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  25. echo "python3 switch increment build failed, some MR make a wrong CMakeLists.txt depends"
  26. echo "or build env can not find default python3 in PATH env"
  27. echo "please refs for PYTHON3_EXECUTABLE_WITHOUT_VERSION define at SRC_ROOT/CMakeLists.txt"
  28. echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  29. exit -1
  30. fi
  31. }
  32. PYTHON_API_INCLUDES=""
  33. function check_build_ninja_python_api() {
  34. INCLUDE_KEYWORD=""
  35. IS_MINOR_HIT=FALSE
  36. if [ $# -eq 1 ]; then
  37. ver=$1
  38. echo "org args: ${ver}"
  39. if [[ $OS =~ "NT" ]]; then
  40. INCLUDE_KEYWORD="${ver}\\\\include"
  41. PYTHON_API_INCLUDES="3.5.4\\\\include 3.6.8\\\\include 3.7.7\\\\include 3.8.3\\\\include"
  42. elif [[ $OS =~ "Linux" ]]; then
  43. INCLUDE_KEYWORD="include/python3.${ver:1:1}"
  44. PYTHON_API_INCLUDES="include/python3.5 include/python3.6 include/python3.7 include/python3.8"
  45. elif [[ $OS =~ "Darwin" ]]; then
  46. INCLUDE_KEYWORD="include/python3.${ver:2:1}"
  47. PYTHON_API_INCLUDES="include/python3.5 include/python3.6 include/python3.7 include/python3.8"
  48. else
  49. echo "unknown OS: ${OS}"
  50. exit -1
  51. fi
  52. else
  53. echo "err call check_build_ninja_python_api"
  54. exit -1
  55. fi
  56. echo "try check python INCLUDE_KEYWORD: ${INCLUDE_KEYWORD} is invalid in ninja.build or not"
  57. NINJA_BUILD=`cat build.ninja`
  58. for PYTHON_API_INCLUDE in ${PYTHON_API_INCLUDES}
  59. do
  60. echo "check PYTHON_API_INCLUDE vs INCLUDE_KEYWORD : (${PYTHON_API_INCLUDE} : ${INCLUDE_KEYWORD})"
  61. if [ ${PYTHON_API_INCLUDE} = ${INCLUDE_KEYWORD} ]; then
  62. if [[ "${NINJA_BUILD}" =~ ${PYTHON_API_INCLUDE} ]]; then
  63. echo "hit INCLUDE_KEYWORD: ${INCLUDE_KEYWORD} in build.ninja"
  64. IS_MINOR_HIT="TRUE"
  65. else
  66. echo "Err happened can not find INCLUDE_KEYWORD: ${INCLUDE_KEYWORD} in build.ninja"
  67. exit -1
  68. fi
  69. else
  70. if [[ "${NINJA_BUILD}" =~ ${PYTHON_API_INCLUDE} ]]; then
  71. echo "Err happened: find PYTHON_API_INCLUDE: ${PYTHON_API_INCLUDE} in build.ninja"
  72. echo "But now INCLUDE_KEYWORD: ${INCLUDE_KEYWORD}"
  73. exit -1
  74. fi
  75. fi
  76. done
  77. if [ ${IS_MINOR_HIT} = "FALSE" ]; then
  78. echo "Err happened, can not hit any MINOR api in ninja.build"
  79. exit -1
  80. fi
  81. }
  82. function check_python_version_is_valid() {
  83. want_build_version=$1
  84. support_version=$2
  85. if [ $# -eq 2 ]; then
  86. ver=$1
  87. else
  88. echo "err call check_python_version_is_valid"
  89. exit -1
  90. fi
  91. is_valid="false"
  92. for i_want_build_version in ${want_build_version}
  93. do
  94. is_valid="false"
  95. for i_support_version in ${support_version}
  96. do
  97. if [ ${i_want_build_version} == ${i_support_version} ];then
  98. is_valid="true"
  99. fi
  100. done
  101. if [ ${is_valid} == "false" ];then
  102. echo "invalid build python version : \"${want_build_version}\", now support party of \"${support_version}\""
  103. exit -1
  104. fi
  105. done
  106. }

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