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.

build.sh 3.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #!/bin/bash
  2. set -e
  3. PROJECTPATH=$(cd "$(dirname $0)"; pwd)
  4. export BUILD_PATH="${PROJECTPATH}/build/"
  5. # print usage message
  6. usage()
  7. {
  8. echo "Usage:"
  9. echo "bash build.sh [-d] [-v] [-c] [-a on|off] [-j[n]] [-p]"
  10. echo ""
  11. echo "Options:"
  12. echo " -d Debug model"
  13. echo " -j[n] Set the threads when building (Default: -j8)"
  14. echo " -v Display build command. Run cpack with verbose output."
  15. echo " -c Enable code coverage, default off"
  16. echo " -a Enable ASAN, default off. Memory error detection tool."
  17. echo " -p MindSpore lib [mindspore_shared_lib] path."
  18. }
  19. # check value of input is 'on' or 'off'
  20. # usage: check_on_off arg_value arg_name
  21. check_on_off()
  22. {
  23. if [[ "X$1" != "Xon" && "X$1" != "Xoff" ]]; then
  24. echo "Invalid value $1 for option -$2"
  25. usage
  26. exit 1
  27. fi
  28. }
  29. # check and set options
  30. checkopts()
  31. {
  32. # Init default values of build options
  33. THREAD_NUM=8
  34. VERBOSE=""
  35. DEBUG_MODE="off"
  36. ENABLE_COVERAGE="off"
  37. ENABLE_ASAN="off"
  38. ENABLE_PYTHON="on"
  39. MS_WHL_LIB_PATH=""
  40. MS_BACKEND=""
  41. MS_VERSION=""
  42. # Process the options
  43. while getopts 'dvcj:a:p:e:V:' opt
  44. do
  45. LOW_OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]')
  46. case "${opt}" in
  47. e)
  48. echo "user opt: -e"${LOW_OPTARG}
  49. if [[ "$OPTARG" != "" ]]; then
  50. MS_BACKEND=$OPTARG
  51. fi
  52. ;;
  53. V)
  54. echo "user opt: -V"${LOW_OPTARG}
  55. if [[ "$OPTARG" != "" ]]; then
  56. MS_VERSION=$OPTARG
  57. fi
  58. ;;
  59. p)
  60. if [[ "$OPTARG" != "" ]]; then
  61. MS_WHL_LIB_PATH=$OPTARG
  62. else
  63. echo "Invalid value ${LOW_OPTARG} for option -e"
  64. usage
  65. exit 1
  66. fi
  67. ;;
  68. d)
  69. echo "user opt: -d"${LOW_OPTARG}
  70. DEBUG_MODE="on"
  71. ;;
  72. j)
  73. echo "user opt: -j"${LOW_OPTARG}
  74. THREAD_NUM=$OPTARG
  75. ;;
  76. v)
  77. echo "user opt: -v"${LOW_OPTARG}
  78. VERBOSE="VERBOSE=1"
  79. ;;
  80. c)
  81. check_on_off $OPTARG c
  82. ENABLE_COVERAGE="$OPTARG"
  83. ;;
  84. a)
  85. check_on_off $OPTARG a
  86. ENABLE_ASAN="$OPTARG"
  87. ;;
  88. *)
  89. echo "Unknown option ${opt}!"
  90. usage
  91. exit 1
  92. esac
  93. done
  94. }
  95. checkopts "$@"
  96. echo "---------------- MindSpore Serving: build start ----------------"
  97. mkdir -pv "${BUILD_PATH}/package/mindspore_serving/lib"
  98. if [[ "$MS_BACKEND" != "" ]]; then
  99. git submodule update --init third_party/mindspore
  100. fi
  101. # Create building path
  102. build_mindspore_serving()
  103. {
  104. echo "start build mindspore_serving project."
  105. mkdir -pv "${BUILD_PATH}/mindspore_serving"
  106. cd "${BUILD_PATH}/mindspore_serving"
  107. CMAKE_ARGS="-DDEBUG_MODE=$DEBUG_MODE -DBUILD_PATH=$BUILD_PATH"
  108. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_PYTHON=${ENABLE_PYTHON}"
  109. CMAKE_ARGS="${CMAKE_ARGS} -DTHREAD_NUM=${THREAD_NUM}"
  110. if [[ "X$ENABLE_COVERAGE" = "Xon" ]]; then
  111. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_COVERAGE=ON"
  112. fi
  113. if [[ "X$ENABLE_ASAN" = "Xon" ]]; then
  114. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_ASAN=ON"
  115. fi
  116. if [[ "$MS_BACKEND" != "" ]]; then
  117. CMAKE_ARGS="${CMAKE_ARGS} -DMS_BACKEND=${MS_BACKEND}"
  118. fi
  119. if [[ "$MS_WHL_LIB_PATH" != "" ]]; then
  120. CMAKE_ARGS="${CMAKE_ARGS} -DMS_WHL_LIB_PATH=${MS_WHL_LIB_PATH}"
  121. fi
  122. if [[ "$MS_VERSION" != "" ]]; then
  123. CMAKE_ARGS="${CMAKE_ARGS} -DMS_VERSION=${MS_VERSION}"
  124. fi
  125. echo "${CMAKE_ARGS}"
  126. cmake ${CMAKE_ARGS} ../..
  127. if [[ -n "$VERBOSE" ]]; then
  128. CMAKE_VERBOSE="--verbose"
  129. fi
  130. cmake --build . --target package ${CMAKE_VERBOSE} -j$THREAD_NUM
  131. echo "success building mindspore_serving project!"
  132. }
  133. build_mindspore_serving
  134. echo "---------------- mindspore_serving: build end ----------------"

A lightweight and high-performance service module that helps MindSpore developers efficiently deploy online inference services in the production environment.