| @@ -0,0 +1,25 @@ | |||||
| name: CI CPU | |||||
| on: | |||||
| push: | |||||
| branches: [master] | |||||
| pull_request: | |||||
| jobs: | |||||
| cpu-test: | |||||
| runs-on: self-hosted | |||||
| container: | |||||
| image: localhost:5000/megengine-ci:latest | |||||
| steps: | |||||
| - name: Checkout MegEngine | |||||
| uses: actions/checkout@v2 | |||||
| - name: Checkout submodules | |||||
| run: | | |||||
| ./third_party/prepare.sh | |||||
| ./third_party/install-mkl.sh | |||||
| - name: Build MegEngine | |||||
| run: ./ci/cmake.sh cpu | |||||
| - name: Python test | |||||
| run: ./ci/run_python_test.sh | |||||
| - name: C++ test | |||||
| run: ./ci/run_cpp_test.sh cpu | |||||
| @@ -0,0 +1,37 @@ | |||||
| #!/bin/bash | |||||
| set -e | |||||
| BASEDIR=$(readlink -f "$(dirname "$0")"/..) | |||||
| source "${BASEDIR}/ci/utils.sh" | |||||
| if [[ "$1" == cpu ]]; then | |||||
| DMGE_WITH_DISTRIBUTED=OFF | |||||
| DMGE_WITH_CUDA=OFF | |||||
| elif [[ "$1" == cuda ]]; then | |||||
| DMGE_WITH_DISTRIBUTED=ON | |||||
| DMGE_WITH_CUDA=ON | |||||
| else | |||||
| log "Argument must cpu or cuda" | |||||
| exit 1 | |||||
| fi | |||||
| function build() { | |||||
| log "Start to build" | |||||
| local build_dir="/tmp/build/${1}" | |||||
| mkdir -p "$build_dir" | |||||
| pushd ${build_dir} >/dev/null | |||||
| cmake -S "${BASEDIR}" -B "${build_dir}" \ | |||||
| -DMGE_WITH_DISTRIBUTED=${DMGE_WITH_DISTRIBUTED} \ | |||||
| -DMGE_WITH_CUDA=${DMGE_WITH_CUDA} \ | |||||
| -DMGE_WITH_TEST=ON \ | |||||
| -DCMAKE_BUILD_TYPE=RelWithDebInfo | |||||
| make -j$(($(nproc) * 2)) -I ${build_dir} | |||||
| make develop | |||||
| popd >/dev/null | |||||
| log "End build: $(ls ${build_dir})" | |||||
| } | |||||
| build "$@" | |||||
| @@ -0,0 +1,39 @@ | |||||
| FROM nvidia/cuda:10.1-devel-ubuntu18.04 | |||||
| RUN rm /etc/apt/sources.list.d/cuda.list | |||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |||||
| autoconf \ | |||||
| autotools-dev \ | |||||
| automake \ | |||||
| clang-6.0 \ | |||||
| curl \ | |||||
| git-lfs \ | |||||
| libtool \ | |||||
| libpcre3-dev \ | |||||
| llvm-6.0-dev \ | |||||
| openssh-client \ | |||||
| openssh-server \ | |||||
| pkg-config \ | |||||
| python-pip \ | |||||
| python3-pip \ | |||||
| python3-dev \ | |||||
| python-numpy \ | |||||
| python3-numpy \ | |||||
| python3-setuptools \ | |||||
| software-properties-common \ | |||||
| swig \ | |||||
| vim \ | |||||
| wget \ | |||||
| zlib1g-dev \ | |||||
| # GitLab Runner need Git 2.18 or higher to create a local Git repository | |||||
| && add-apt-repository ppa:git-core/ppa -y && apt-get install --no-install-recommends -y git \ | |||||
| && rm -rf /var/lib/apt/lists/* | |||||
| RUN cd /tmp ; wget https://cmake.org/files/v3.14/cmake-3.14.4.tar.gz;tar -xzvf cmake-3.14.4.tar.gz;cd cmake-3.14.4;./configure; make -j32; make install | |||||
| RUN git lfs install | |||||
| ENV PATH=${PATH}:/usr/local/cuda/bin \ | |||||
| LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/local/cuda/lib/stubs:/usr/local/cuda/lib64/stubs:/usr/local/cuda-10.1-libs/cudnn-v7.6.0/lib:/usr/local/cuda-10.1-libs/cudnn-v7.6.0/lib64:/usr/local/cuda-10.1-libs/TensorRT-5.1.5.0/lib:/usr/local/cuda-10.1-libs/TensorRT-5.1.5.0/lib64 \ | |||||
| LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/local/cuda/lib/stubs:/usr/local/cuda/lib64/stubs:/usr/local/cuda-10.1-libs/cudnn-v7.6.0/lib:/usr/local/cuda-10.1-libs/cudnn-v7.6.0/lib64:/usr/local/cuda-10.1-libs/TensorRT-5.1.5.0/lib:/usr/local/cuda-10.1-libs/TensorRT-5.1.5.0/lib64:/usr/local/cuda/lib64/stubs/libcuda.so:/tmp/build/cuda/dnn/cuda-stub/libcuda.so.1 \ | |||||
| CPATH=${CPATH}:/usr/local/cuda/include:/usr/local/cuda-10.1-libs/cudnn-v7.6.0/include:/usr/local/cuda-10.1-libs/TensorRT-5.1.5.0/include | |||||
| @@ -0,0 +1,24 @@ | |||||
| #!/bin/bash | |||||
| set -e | |||||
| BASEDIR=$(readlink -f "$(dirname "$0")"/..) | |||||
| source "${BASEDIR}/ci/utils.sh" | |||||
| export MGB_TEST_NO_LOG=1 | |||||
| export MGB_STABLE_RNG=1 | |||||
| function cpp_test { | |||||
| pushd /tmp/build/"${1}" >/dev/null | |||||
| ./dnn/test/megdnn_test | |||||
| ./test/megbrain_test | |||||
| popd >/dev/null | |||||
| } | |||||
| if [[ "$1" != "cpu" && "$1" != "cuda" ]] ; then | |||||
| echo "Argument must cpu or cuda" | |||||
| exit 1 | |||||
| fi | |||||
| cpp_test "$@" | |||||
| @@ -0,0 +1,16 @@ | |||||
| #!/bin/bash | |||||
| set -e | |||||
| BASEDIR=$(readlink -f "$(dirname "$0")"/..) | |||||
| function python_test() { | |||||
| pushd "${BASEDIR}"/python_module >/dev/null | |||||
| pip3 install -e '.[ci]' | |||||
| export PYTHONPATH=. | |||||
| ./test/run.sh | |||||
| popd >/dev/null | |||||
| } | |||||
| python_test | |||||
| @@ -0,0 +1,7 @@ | |||||
| #!/bin/bash -e | |||||
| function log() { | |||||
| d=$(date +'%Y-%m-%d %H:%M:%S') | |||||
| echo $d" "$1 | |||||
| } | |||||