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.

do_build.sh 3.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/bin/bash -e
  2. ALL_PYTHON=${ALL_PYTHON}
  3. if [[ -z ${ALL_PYTHON} ]]
  4. then
  5. ALL_PYTHON="35m 36m 37m 38"
  6. fi
  7. BUILD_WHL_CPU_ONLY=${BUILD_WHL_CPU_ONLY}
  8. if [[ -z ${BUILD_WHL_CPU_ONLY} ]]
  9. then
  10. BUILD_WHL_CPU_ONLY="OFF"
  11. fi
  12. SRC_DIR=$(readlink -f "`dirname $0`/../../../")
  13. BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_OFF/MGE_INFERENCE_ONLY_OFF/Release/build/
  14. if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then
  15. BUILD_DIR=${SRC_DIR}/build_dir/host/MGE_WITH_CUDA_ON/MGE_INFERENCE_ONLY_OFF/Release/build/
  16. fi
  17. NEW_LIB_PATH=core/lib
  18. function handle_strip() {
  19. echo "now handle strip $1"
  20. objcopy --only-keep-debug $1 $1.dbg
  21. strip -s $1
  22. objcopy --add-gnu-debuglink=$1.dbg $1
  23. rm $1.dbg
  24. }
  25. function patch_elf_depend_lib() {
  26. echo "handle common depend lib"
  27. LIBS_DIR=${BUILD_DIR}/staging/megengine/core/lib
  28. mkdir -p ${LIBS_DIR}
  29. cp /usr/lib64/libatomic.so.1 ${LIBS_DIR}
  30. patchelf --remove-rpath ${BUILD_DIR}/staging/megengine/core/_imperative_rt.so
  31. patchelf --force-rpath --set-rpath '$ORIGIN/lib' ${BUILD_DIR}/staging/megengine/core/_imperative_rt.so
  32. if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then
  33. echo "handle cuda lib"
  34. CUDA_VER=10.1
  35. cp ${BUILD_DIR}/dnn/cuda-stub/libcuda.so ${LIBS_DIR}
  36. cp /usr/local/cuda/lib64/libnvrtc.so.${CUDA_VER} ${LIBS_DIR}
  37. cp /usr/local/cuda/lib64/libnvToolsExt.so.1 ${LIBS_DIR}
  38. fi
  39. }
  40. for ver in ${ALL_PYTHON}
  41. do
  42. USE_AUDITWHEEL="ON"
  43. python_ver=${ver:0:2}
  44. MAJOR=${python_ver:0:1}
  45. MINOR=${ver:1}
  46. PYTHON_DIR=/opt/python/cp${python_ver}-cp${ver}/
  47. export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_BUILD_TYPE=RelWithDebInfo"
  48. export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_PREFIX_PATH=${PYTHON_DIR}"
  49. export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DPYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3"
  50. export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DPYTHON_LIBRARY=${PYTHON_DIR}lib/"
  51. export EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DPYTHON_INCLUDE_DIR=${PYTHON_DIR}include/python${MAJOR}.${MINOR}"
  52. if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then
  53. ${SRC_DIR}/scripts/cmake-build/host_build.sh -c -t -r
  54. else
  55. ${SRC_DIR}/scripts/cmake-build/host_build.sh -t -r
  56. fi
  57. cd ${BUILD_DIR}
  58. rm -rf staging
  59. mkdir -p staging
  60. cp -a imperative/python/{megengine,setup.py,requires.txt,requires-style.txt,requires-test.txt} staging/
  61. if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then
  62. cd ${BUILD_DIR}/dnn/cuda-stub/
  63. strip -s libcuda.so
  64. ln -sf libcuda.so libcuda.so.1
  65. fi
  66. handle_strip ${BUILD_DIR}/src/libmegengine_export.so
  67. cd ${BUILD_DIR}/staging/megengine/core
  68. handle_strip _imperative_rt.so
  69. mkdir -p lib/ucx
  70. if [ ${BUILD_WHL_CPU_ONLY} = "OFF" ]; then
  71. cp -L /usr/local/cuda/lib*/libnvrtc-builtins.so lib
  72. fi
  73. if [ ${USE_AUDITWHEEL} = "OFF" ]; then
  74. patch_elf_depend_lib
  75. fi
  76. cd ${BUILD_DIR}/staging/
  77. ${PYTHON_DIR}/bin/python setup.py bdist_wheel
  78. cd /home/output
  79. if [ ${USE_AUDITWHEEL} = "ON" ]; then
  80. LD_LIBRARY_PATH=${BUILD_DIR}/dnn/cuda-stub:$LD_LIBRARY_PATH auditwheel repair -L ${NEW_LIB_PATH} ${BUILD_DIR}/staging/dist/Meg*.whl
  81. else
  82. mkdir -p ${SRC_DIR}/scripts/whl/manylinux2010/output/wheelhouse
  83. cd ${BUILD_DIR}/staging/dist/
  84. org_whl_name=`ls Meg*${ver}*.whl`
  85. compat_whl_name=`echo ${org_whl_name} | sed 's/linux/manylinux2010/'`
  86. echo "org whl name: ${org_whl_name}"
  87. echo "comapt whl name: ${compat_whl_name}"
  88. mv ${org_whl_name} ${SRC_DIR}/scripts/whl/manylinux2010/output/wheelhouse/${compat_whl_name}
  89. cd /home/output
  90. fi
  91. chown -R ${UID}.${UID} .
  92. # compat for root-less docker env to remove output at host side
  93. chmod -R 777 .
  94. done

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