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.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. EXTRA_CMAKE_ARGS=
  8. if [[ "$1" == imperative ]]; then
  9. BUILD_IMPERATIVE=ON
  10. SO_NAME=_imperative_rt
  11. SO_PATH=megengine/core
  12. else
  13. BUILD_IMPERATIVE=OFF
  14. SO_NAME=_mgb
  15. SO_PATH=megengine/_internal
  16. fi
  17. for ver in ${ALL_PYTHON}
  18. do
  19. python_ver=${ver:0:2}
  20. BUILD_DIR=/tmp/build_megengine/python${python_ver}
  21. MAJOR=${python_ver:0:1}
  22. MINOR=${ver:1}
  23. PYTHON_DIR=/opt/python/cp${python_ver}-cp${ver}/
  24. EXT_NAME=${SO_NAME}.cpython-${ver}-x86_64-linux-gnu.so
  25. mkdir -p ${BUILD_DIR}
  26. pushd ${BUILD_DIR} >/dev/null
  27. MGE_CMAKE_FLAGS="-DMGE_WITH_DISTRIBUTED=ON \
  28. -DMGE_WITH_CUDA=ON \
  29. -DCMAKE_PREFIX_PATH=${PYTHON_DIR} \
  30. -DCMAKE_INSTALL_PREFIX=/home/output "
  31. if [[ "$BUILD_IMPERATIVE" == ON ]]; then
  32. MGE_CMAKE_FLAGS+=" -DMGE_BUILD_IMPERATIVE_RT=ON \
  33. -DPYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3"
  34. else
  35. MGE_CMAKE_FLAGS+=" -DPYTHON_LIBRARY=${PYTHON_DIR}lib/ \
  36. -DPYTHON_INCLUDE_DIR=${PYTHON_DIR}include/python${MAJOR}.${MINOR}"
  37. fi
  38. cmake /home/code ${MGE_CMAKE_FLAGS} ${EXTRA_CMAKE_ARGS}
  39. make -j$(nproc) VERBOSE=1
  40. make install
  41. mkdir -p staging
  42. mkdir -p /home/output/debug
  43. if [[ "$BUILD_IMPERATIVE" == ON ]]; then
  44. cp -a imperative/python/{megengine,setup.py,requires.txt,requires-style.txt,requires-test.txt} staging/
  45. else
  46. cp -a python_module/{megengine,setup.py,requires.txt,requires-style.txt,requires-test.txt} staging/
  47. fi
  48. pushd dnn/cuda-stub/ >/dev/null
  49. strip -s libcuda.so
  50. ln -sf libcuda.so libcuda.so.1
  51. popd >/dev/null
  52. pushd staging >/dev/null
  53. pushd ${SO_PATH} >/dev/null
  54. SO_NAME_EXT=${SO_NAME}.so
  55. objcopy --only-keep-debug ${SO_NAME_EXT} ${EXT_NAME}.dbg
  56. strip -s ${SO_NAME_EXT}
  57. objcopy --add-gnu-debuglink=${EXT_NAME}.dbg ${SO_NAME_EXT}
  58. cp -a ${EXT_NAME}.dbg /home/output/debug
  59. mkdir -p lib/ucx
  60. cp -L /usr/local/cuda/lib*/libnvrtc-builtins.so lib
  61. cp -L ${BUILD_DIR}/third_party/MegRay/third_party/ucx/lib/ucx/*.so lib/ucx/
  62. strip -s lib/ucx/*.so
  63. popd >/dev/null
  64. ${PYTHON_DIR}/bin/python setup.py bdist_wheel
  65. popd >/dev/null
  66. popd >/dev/null
  67. pushd /home/output >/dev/null
  68. if [[ "$BUILD_IMPERATIVE" == ON ]]; then
  69. NEW_LIB_PATH=core/lib
  70. else
  71. NEW_LIB_PATH=_internal/lib
  72. fi
  73. LD_LIBRARY_PATH=${BUILD_DIR}/dnn/cuda-stub:$LD_LIBRARY_PATH auditwheel repair -L ${NEW_LIB_PATH} ${BUILD_DIR}/staging/dist/Meg*.whl
  74. chown -R ${UID}.${UID} .
  75. popd >/dev/null
  76. rm -rf ${BUILD_DIR}
  77. done
  78. pushd /home/code/dnn/scripts >/dev/null
  79. rm -rf __pycache__
  80. popd >/dev/null

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