.gitlab-ci.yml 7.9 KB
Newer Older
Y
yejianwu 已提交
1
stages:
L
Liangliang He 已提交
2 3 4 5
  - linting
  - build
  - test
  - extra
6 7

cpplint:
L
Liangliang He 已提交
8
  stage: linting
9
  script:
L
Liangliang He 已提交
10
    - sh tools/cpplint.sh
L
Liangliang He 已提交
11

L
Liangliang He 已提交
12 13
pylint:
  stage: linting
L
Liangliang He 已提交
14 15
  script:
    - pycodestyle $(find -name "*.py")
Y
yejianwu 已提交
16

L
Liangliang He 已提交
17
build_docs:
L
Liangliang He 已提交
18
  stage: build
L
Liangliang He 已提交
19 20 21 22
  script:
    - cd docs
    - make html
    - CI_LATEST_OUTPUT_PATH=/mace-build-output/$CI_PROJECT_NAME/latest
L
Liangliang He 已提交
23 24
    - CI_JOB_OUTPUT_PATH=/mace-build-output/$CI_PROJECT_NAME/$CI_PIPELINE_ID
    - rm -rf $CI_JOB_OUTPUT_PATH
L
Liangliang He 已提交
25 26 27 28 29 30 31 32 33 34
    - mkdir -p $CI_JOB_OUTPUT_PATH
    - cp -r _build/html $CI_JOB_OUTPUT_PATH/docs
    - rm -rf $CI_LATEST_OUTPUT_PATH
    - mkdir -p $CI_LATEST_OUTPUT_PATH
    - cp -r _build/html $CI_LATEST_OUTPUT_PATH/docs

  artifacts:
    paths:
      - docs/_build

L
Liangliang He 已提交
35
cmake_build_android-armeabi-v7a:
L
Liangliang He 已提交
36
  stage: build
L
Liangliang He 已提交
37
  script:
L
Liangliang He 已提交
38
    - sh tools/cmake-build-android-armeabi-v7a-full.sh
L
Liangliang He 已提交
39 40
    - LIBMACE32_FULL_SIZE=`stat -c%s cmake-build/android-armeabi-v7a-full/install/lib/libmace.so`
    - if (( LIBMACE32_FULL_SIZE > 2200000 )) ; then echo "The libmace.so size too large"; exit 1; fi
L
Liangliang He 已提交
41

L
Liangliang He 已提交
42
cmake_build_android-arm64-v8:
L
Liangliang He 已提交
43
  stage: build
L
Liangliang He 已提交
44
  script:
L
Liangliang He 已提交
45
    - sh tools/cmake-build-android-arm64-v8a-full.sh
L
Liangliang He 已提交
46
    - LIBMACE64_FULL_SIZE=`stat -c%s cmake-build/android-arm64-v8a-full/install/lib/libmace.so`
L
Liangliang He 已提交
47
    - if (( LIBMACE64_FULL_SIZE > 3100000 )) ; then echo "The libmace.so size too large"; exit 1; fi
L
Liangliang He 已提交
48

L
Liangliang He 已提交
49
bazel_build:
L
Liangliang He 已提交
50 51
  stage: build
  script:
L
Liangliang He 已提交
52
    - sh tools/bazel-build-standalone-lib.sh
L
Liangliang He 已提交
53 54
  only:
    - triggers
B
Bin Li 已提交
55

L
Liangliang He 已提交
56
cmake_build:
L
Liangliang He 已提交
57 58
  stage: build
  script:
L
Liangliang He 已提交
59
    - sh tools/cmake-build-standalone-lib.sh
L
Liangliang He 已提交
60 61 62
  only:
    - triggers

L
Liangliang He 已提交
63 64 65 66 67 68 69 70 71 72 73
build_android_demo:
  stage: build
  script:
    - ANDROID_NDK_HOME_SAVED=${ANDROID_NDK_HOME}
    - export ANDROID_NDK_HOME=/opt/android-ndk-r17b
    - pushd examples/android/ && bash build.sh static && bash build.sh dynamic && popd
    - export ANDROID_NDK_HOME=${ANDROID_NDK_HOME_SAVED}
  only:
    - triggers

mace_cc_test:
L
Liangliang He 已提交
74 75
  stage: test
  script:
L
Liangliang He 已提交
76 77 78 79 80 81 82
    - if [ -z "$TARGET_SOCS" ]; then TARGET_SOCS=random; fi
    - >
      if ping -c 1 v9.git.n.xiaomi.com 1>/dev/null 2>&1; then
        GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@v9.git.n.xiaomi.com:deep-computing/generic-mobile-devices.git
        DEVICE_CONF_FILE=generic-mobile-devices/devices.yml
      fi
    - python tools/bazel_adb_run.py --target="//test/ccunit:mace_cc_test" --device_yml=${DEVICE_CONF_FILE} --run_target=True --stdout_processor=unittest_stdout_processor --target_abis=armeabi-v7a,arm64-v8a,arm64 --target_socs=$TARGET_SOCS
L
Liangliang He 已提交
83

L
Liangliang He 已提交
84
mace_cc_benchmark:
L
Liangliang He 已提交
85 86
  stage: test
  script:
L
Liangliang He 已提交
87 88
    - if [ -z "$TARGET_SOCS" ]; then TARGET_SOCS=random; fi
    - python tools/bazel_adb_run.py --target="//test/ccbenchmark:mace_cc_benchmark" --run_target=True --stdout_processor=ops_benchmark_stdout_processor --target_abis=armeabi-v7a,arm64-v8a --target_socs=$TARGET_SOCS --args="--filter=.*SIGMOID.*"
L
Liangliang He 已提交
89 90
  only:
    - triggers
Y
yejianwu 已提交
91

L
Liangliang He 已提交
92 93
model_tests:
  stage: test
L
liuqi 已提交
94
  script:
L
Liangliang He 已提交
95 96 97 98 99 100 101 102 103 104 105
    - pwd
    - rm -rf mace-models
    - rm -rf generic-mobile-devices
    - GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@github.com:XiaoMi/mace-models.git
    - CONF_FILE=mace-models/mobilenet-v1/mobilenet-v1.yml
    - >
      if ping -c 1 v9.git.n.xiaomi.com 1>/dev/null 2>&1; then
        GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@v9.git.n.xiaomi.com:deep-computing/generic-mobile-devices.git
        DEVICE_CONF_FILE=generic-mobile-devices/devices.yml
      fi
    - if [ -z "$TARGET_SOCS" ]; then TARGET_SOCS=random; fi
L
Liangliang He 已提交
106 107 108
    - python tools/converter.py convert --config=${CONF_FILE}  --target_socs=$TARGET_SOCS --model_graph_format=file --model_data_format=file --cl_mem_type=buffer
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --device_yml=${DEVICE_CONF_FILE} --round=1 --target_abis=armeabi-v7a,arm64 --validate --model_graph_format=file --model_data_format=file
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --device_yml=${DEVICE_CONF_FILE} --example --target_abis=armeabi-v7a,arm64 --round=1 --validate --model_graph_format=file --model_data_format=file
L
Liangliang He 已提交
109
    - CONF_FILE=mace-models/mobilenet-v2/mobilenet-v2-host.yml
L
Liangliang He 已提交
110 111 112 113 114 115 116 117
    - python tools/converter.py convert --config=${CONF_FILE} --target_socs=$TARGET_SOCS --model_graph_format=file --model_data_format=file
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --round=1 --validate --model_graph_format=file --model_data_format=file --address_sanitizer
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --example --round=1 --validate --model_graph_format=file --model_data_format=file
    - python tools/converter.py benchmark --config=${CONF_FILE} --target_socs=$TARGET_SOCS --round=5 --model_graph_format=file --model_data_format=file
    - python tools/converter.py convert --config=${CONF_FILE} --target_socs=$TARGET_SOCS --model_graph_format=code --model_data_format=file
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --round=1 --validate --model_graph_format=code --model_data_format=file
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --example --round=1 --validate --model_graph_format=code --model_data_format=file
    - python tools/converter.py benchmark --config=${CONF_FILE} --target_socs=$TARGET_SOCS --round=5 --model_graph_format=code --model_data_format=file
L
Liangliang He 已提交
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
    - rm -rf mace-models

quantization_tests:
  stage: test
  script:
    - pwd
    - rm -rf mace-models
    - GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@github.com:XiaoMi/mace-models.git
    - >
      if ping -c 1 v9.git.n.xiaomi.com 1>/dev/null 2>&1; then
        GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@v9.git.n.xiaomi.com:deep-computing/generic-mobile-devices.git
        DEVICE_CONF_FILE=generic-mobile-devices/devices.yml
      fi
    - if [ -z "$TARGET_SOCS" ]; then TARGET_SOCS=random; fi
    - >
      for CONF_FILE in mace-models/mobilenet-v1/mobilenet-v1-quantize-friendly.yml mace-models/mobilenet-v1/mobilenet-v1-quantize-retrain-for-check-only.yml mace-models/mobilenet-v1/mobilenet-v1-quantize-retrain-dsp.yml;
      do
L
Liangliang He 已提交
135 136 137
      python tools/converter.py convert --config=${CONF_FILE} --target_socs=$TARGET_SOCS --model_graph_format=file --model_data_format=file || exit 1;
      python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --device_yml=${DEVICE_CONF_FILE} --round=1 --validate --model_graph_format=file --model_data_format=file || exit 1;
      python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --device_yml=${DEVICE_CONF_FILE} --example --round=1 --validate --layers=0 --model_graph_format=file --model_data_format=file || exit 1;
L
Liangliang He 已提交
138 139
      done
    - rm -rf mace-models
L
Liangliang He 已提交
140 141
  only:
    - triggers
L
Liangliang He 已提交
142 143

dynamic_linking_test:
L
Liangliang He 已提交
144 145
  stage: extra
  script:
L
Liangliang He 已提交
146 147 148 149 150 151 152 153 154 155 156
    - pwd
    - rm -rf mace-models
    - rm -rf generic-mobile-devices
    - GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@github.com:XiaoMi/mace-models.git
    - CONF_FILE=mace-models/mobilenet-v1/mobilenet-v1.yml
    - >
      if ping -c 1 v9.git.n.xiaomi.com 1>/dev/null 2>&1; then
        GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@v9.git.n.xiaomi.com:deep-computing/generic-mobile-devices.git
        DEVICE_CONF_FILE=generic-mobile-devices/devices.yml
      fi
    - if [ -z "$TARGET_SOCS" ]; then TARGET_SOCS=random; fi
L
Liangliang He 已提交
157 158
    - python tools/converter.py convert --config=${CONF_FILE}  --target_socs=$TARGET_SOCS --model_graph_format=file --model_data_format=file --cl_mem_type=buffer
    - python tools/converter.py run --config=${CONF_FILE} --target_socs=$TARGET_SOCS --device_yml=${DEVICE_CONF_FILE} --example --mace_lib_type=dynamic --target_abis=armeabi-v7a,arm64 --round=1 --validate --model_graph_format=file --model_data_format=file
L
Liangliang He 已提交
159
    - rm -rf mace-models
L
Liangliang He 已提交
160 161
  only:
    - triggers