|
- #!/bin/bash -e
- ALL_PYTHON=${ALL_PYTHON}
- if [[ -z ${ALL_PYTHON} ]]
- then
- ALL_PYTHON="35m 36m 37m 38"
- fi
-
- EXTRA_CMAKE_ARGS=
- if [[ "$1" == imperative ]]; then
- BUILD_IMPERATIVE=ON
- SO_NAME=_imperative_rt
- SO_PATH=megengine/core
- else
- BUILD_IMPERATIVE=OFF
- SO_NAME=_mgb
- SO_PATH=megengine/_internal
- fi
-
- for ver in ${ALL_PYTHON}
- do
- python_ver=${ver:0:2}
- BUILD_DIR=/tmp/build_megengine/python${python_ver}
- MAJOR=${python_ver:0:1}
- MINOR=${ver:1}
- PYTHON_DIR=/opt/python/cp${python_ver}-cp${ver}/
- EXT_NAME=${SO_NAME}.cpython-${ver}-x86_64-linux-gnu.so
- mkdir -p ${BUILD_DIR}
- pushd ${BUILD_DIR} >/dev/null
- MGE_CMAKE_FLAGS="-DMGE_WITH_DISTRIBUTED=ON \
- -DMGE_WITH_CUDA=ON \
- -DCMAKE_PREFIX_PATH=${PYTHON_DIR} \
- -DCMAKE_INSTALL_PREFIX=/home/output "
- if [[ "$BUILD_IMPERATIVE" == ON ]]; then
- MGE_CMAKE_FLAGS+=" -DMGE_BUILD_IMPERATIVE_RT=ON \
- -DPYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3"
- else
- MGE_CMAKE_FLAGS+=" -DPYTHON_LIBRARY=${PYTHON_DIR}lib/ \
- -DPYTHON_INCLUDE_DIR=${PYTHON_DIR}include/python${MAJOR}.${MINOR}"
- fi
- cmake /home/code ${MGE_CMAKE_FLAGS} ${EXTRA_CMAKE_ARGS}
- make -j$(nproc) VERBOSE=1
- make install
- mkdir -p staging
- mkdir -p /home/output/debug
- if [[ "$BUILD_IMPERATIVE" == ON ]]; then
- cp -a imperative/python/{megengine,setup.py,requires.txt,requires-style.txt,requires-test.txt} staging/
- else
- cp -a python_module/{megengine,setup.py,requires.txt,requires-style.txt,requires-test.txt} staging/
- fi
- pushd dnn/cuda-stub/ >/dev/null
- strip -s libcuda.so
- ln -sf libcuda.so libcuda.so.1
- popd >/dev/null
- pushd staging >/dev/null
- pushd ${SO_PATH} >/dev/null
- SO_NAME_EXT=${SO_NAME}.so
- objcopy --only-keep-debug ${SO_NAME_EXT} ${EXT_NAME}.dbg
- strip -s ${SO_NAME_EXT}
- objcopy --add-gnu-debuglink=${EXT_NAME}.dbg ${SO_NAME_EXT}
- cp -a ${EXT_NAME}.dbg /home/output/debug
- mkdir -p lib/ucx
- cp -L /usr/local/cuda/lib*/libnvrtc-builtins.so lib
- cp -L ${BUILD_DIR}/third_party/MegRay/third_party/ucx/lib/ucx/*.so lib/ucx/
- strip -s lib/ucx/*.so
- popd >/dev/null
- ${PYTHON_DIR}/bin/python setup.py bdist_wheel
- popd >/dev/null
- popd >/dev/null
- pushd /home/output >/dev/null
- if [[ "$BUILD_IMPERATIVE" == ON ]]; then
- NEW_LIB_PATH=core/lib
- else
- NEW_LIB_PATH=_internal/lib
- fi
- LD_LIBRARY_PATH=${BUILD_DIR}/dnn/cuda-stub:$LD_LIBRARY_PATH auditwheel repair -L ${NEW_LIB_PATH} ${BUILD_DIR}/staging/dist/Meg*.whl
- chown -R ${UID}.${UID} .
- popd >/dev/null
- rm -rf ${BUILD_DIR}
- done
-
-
- pushd /home/code/dnn/scripts >/dev/null
- rm -rf __pycache__
- popd >/dev/null
|