This is an automated email from the ASF dual-hosted git repository.
mousius pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new b4e36c61fc [CI] Increase the number of shards for Cortex-M from 4 to
8. (#12334)
b4e36c61fc is described below
commit b4e36c61fcf07e3e75649e72bd97a35603edc2b6
Author: Florin Blanaru <[email protected]>
AuthorDate: Mon Aug 8 14:09:12 2022 +0100
[CI] Increase the number of shards for Cortex-M from 4 to 8. (#12334)
Co-authored-by: Florin-Gabriel Blanaru <[email protected]>
---
Jenkinsfile | 340 +++++++++++++++++++++++++++++++++++++++++++---
ci/jenkins/Test.groovy.j2 | 2 +-
2 files changed, 321 insertions(+), 21 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 7da3b9f8df..6fe2c85e22 100755
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -4266,7 +4266,7 @@ def shard_run_frontend_aarch64_2_of_2() {
}
-def shard_run_test_Cortex_M_1_of_4() {
+def shard_run_test_Cortex_M_1_of_8() {
if (!skip_ci && is_docs_only_build != 1) {
node('CPU-SMALL') {
ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
@@ -4276,7 +4276,7 @@ def shard_run_test_Cortex_M_1_of_4() {
timeout(time: max_time, unit: 'MINUTES') {
withEnv([
'PLATFORM=cortexm',
- 'TVM_NUM_SHARDS=4',
+ 'TVM_NUM_SHARDS=8',
'TVM_SHARD_INDEX=0'], {
sh(
script: """
@@ -4339,11 +4339,11 @@ def shard_run_test_Cortex_M_1_of_4() {
}
}
} else {
- Utils.markStageSkippedForConditional('test: Cortex-M 1 of 4')
+ Utils.markStageSkippedForConditional('test: Cortex-M 1 of 8')
}
}
-def shard_run_test_Cortex_M_2_of_4() {
+def shard_run_test_Cortex_M_2_of_8() {
if (!skip_ci && is_docs_only_build != 1) {
node('CPU-SMALL') {
ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
@@ -4353,7 +4353,7 @@ def shard_run_test_Cortex_M_2_of_4() {
timeout(time: max_time, unit: 'MINUTES') {
withEnv([
'PLATFORM=cortexm',
- 'TVM_NUM_SHARDS=4',
+ 'TVM_NUM_SHARDS=8',
'TVM_SHARD_INDEX=1'], {
sh(
script: """
@@ -4411,11 +4411,11 @@ def shard_run_test_Cortex_M_2_of_4() {
}
}
} else {
- Utils.markStageSkippedForConditional('test: Cortex-M 2 of 4')
+ Utils.markStageSkippedForConditional('test: Cortex-M 2 of 8')
}
}
-def shard_run_test_Cortex_M_3_of_4() {
+def shard_run_test_Cortex_M_3_of_8() {
if (!skip_ci && is_docs_only_build != 1) {
node('CPU-SMALL') {
ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
@@ -4425,7 +4425,7 @@ def shard_run_test_Cortex_M_3_of_4() {
timeout(time: max_time, unit: 'MINUTES') {
withEnv([
'PLATFORM=cortexm',
- 'TVM_NUM_SHARDS=4',
+ 'TVM_NUM_SHARDS=8',
'TVM_SHARD_INDEX=2'], {
sh(
script: """
@@ -4483,11 +4483,11 @@ def shard_run_test_Cortex_M_3_of_4() {
}
}
} else {
- Utils.markStageSkippedForConditional('test: Cortex-M 3 of 4')
+ Utils.markStageSkippedForConditional('test: Cortex-M 3 of 8')
}
}
-def shard_run_test_Cortex_M_4_of_4() {
+def shard_run_test_Cortex_M_4_of_8() {
if (!skip_ci && is_docs_only_build != 1) {
node('CPU-SMALL') {
ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
@@ -4497,7 +4497,7 @@ def shard_run_test_Cortex_M_4_of_4() {
timeout(time: max_time, unit: 'MINUTES') {
withEnv([
'PLATFORM=cortexm',
- 'TVM_NUM_SHARDS=4',
+ 'TVM_NUM_SHARDS=8',
'TVM_SHARD_INDEX=3'], {
sh(
script: """
@@ -4555,7 +4555,295 @@ def shard_run_test_Cortex_M_4_of_4() {
}
}
} else {
- Utils.markStageSkippedForConditional('test: Cortex-M 4 of 4')
+ Utils.markStageSkippedForConditional('test: Cortex-M 4 of 8')
+ }
+}
+
+def shard_run_test_Cortex_M_5_of_8() {
+ if (!skip_ci && is_docs_only_build != 1) {
+ node('CPU-SMALL') {
+ ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
+ try {
+ docker_init(ci_cortexm)
+ init_git()
+ timeout(time: max_time, unit: 'MINUTES') {
+ withEnv([
+ 'PLATFORM=cortexm',
+ 'TVM_NUM_SHARDS=8',
+ 'TVM_SHARD_INDEX=4'], {
+ sh(
+ script: """
+ set -eux
+ retry() {
+ local retries=\$1
+ shift
+
+ local count=0
+ until "\$@"; do
+ exit=\$?
+ wait=\$((2 ** \$count))
+ count=\$((\$count + 1))
+ if [ \$count -lt \$retries ]; then
+ echo "Retry \$count/\$retries exited \$exit,
retrying in \$wait seconds..."
+ sleep \$wait
+ else
+ echo "Retry \$count/\$retries exited \$exit,
no more retries left."
+ return \$exit
+ fi
+ done
+ return 0
+ }
+
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so
+ md5sum build/libtvm.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so
+ md5sum build/libtvm_runtime.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake
+ md5sum build/config.cmake
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/microtvm_template_projects
build/microtvm_template_projects --recursive
+ """,
+ label: 'Download artifacts from S3',
+ )
+
+ add_microtvm_permissions()
+ ci_setup(ci_cortexm)
+ sh (
+ script: "${docker_run} ${ci_cortexm}
./tests/scripts/task_python_microtvm.sh",
+ label: 'Run microTVM tests',
+ )
+ })
+ }
+ } finally {
+ sh(
+ script: """
+ set -eux
+ aws s3 cp --no-progress build/pytest-results
s3://${s3_prefix}/pytest-results --recursive
+ """,
+ label: 'Upload JUnits to S3',
+ )
+
+ junit 'build/pytest-results/*.xml'
+ }
+ }
+ }
+ } else {
+ Utils.markStageSkippedForConditional('test: Cortex-M 5 of 8')
+ }
+}
+
+def shard_run_test_Cortex_M_6_of_8() {
+ if (!skip_ci && is_docs_only_build != 1) {
+ node('CPU-SMALL') {
+ ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
+ try {
+ docker_init(ci_cortexm)
+ init_git()
+ timeout(time: max_time, unit: 'MINUTES') {
+ withEnv([
+ 'PLATFORM=cortexm',
+ 'TVM_NUM_SHARDS=8',
+ 'TVM_SHARD_INDEX=5'], {
+ sh(
+ script: """
+ set -eux
+ retry() {
+ local retries=\$1
+ shift
+
+ local count=0
+ until "\$@"; do
+ exit=\$?
+ wait=\$((2 ** \$count))
+ count=\$((\$count + 1))
+ if [ \$count -lt \$retries ]; then
+ echo "Retry \$count/\$retries exited \$exit,
retrying in \$wait seconds..."
+ sleep \$wait
+ else
+ echo "Retry \$count/\$retries exited \$exit,
no more retries left."
+ return \$exit
+ fi
+ done
+ return 0
+ }
+
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so
+ md5sum build/libtvm.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so
+ md5sum build/libtvm_runtime.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake
+ md5sum build/config.cmake
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/microtvm_template_projects
build/microtvm_template_projects --recursive
+ """,
+ label: 'Download artifacts from S3',
+ )
+
+ add_microtvm_permissions()
+ ci_setup(ci_cortexm)
+ sh (
+ script: "${docker_run} ${ci_cortexm}
./tests/scripts/task_python_microtvm.sh",
+ label: 'Run microTVM tests',
+ )
+ })
+ }
+ } finally {
+ sh(
+ script: """
+ set -eux
+ aws s3 cp --no-progress build/pytest-results
s3://${s3_prefix}/pytest-results --recursive
+ """,
+ label: 'Upload JUnits to S3',
+ )
+
+ junit 'build/pytest-results/*.xml'
+ }
+ }
+ }
+ } else {
+ Utils.markStageSkippedForConditional('test: Cortex-M 6 of 8')
+ }
+}
+
+def shard_run_test_Cortex_M_7_of_8() {
+ if (!skip_ci && is_docs_only_build != 1) {
+ node('CPU-SMALL') {
+ ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
+ try {
+ docker_init(ci_cortexm)
+ init_git()
+ timeout(time: max_time, unit: 'MINUTES') {
+ withEnv([
+ 'PLATFORM=cortexm',
+ 'TVM_NUM_SHARDS=8',
+ 'TVM_SHARD_INDEX=6'], {
+ sh(
+ script: """
+ set -eux
+ retry() {
+ local retries=\$1
+ shift
+
+ local count=0
+ until "\$@"; do
+ exit=\$?
+ wait=\$((2 ** \$count))
+ count=\$((\$count + 1))
+ if [ \$count -lt \$retries ]; then
+ echo "Retry \$count/\$retries exited \$exit,
retrying in \$wait seconds..."
+ sleep \$wait
+ else
+ echo "Retry \$count/\$retries exited \$exit,
no more retries left."
+ return \$exit
+ fi
+ done
+ return 0
+ }
+
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so
+ md5sum build/libtvm.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so
+ md5sum build/libtvm_runtime.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake
+ md5sum build/config.cmake
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/microtvm_template_projects
build/microtvm_template_projects --recursive
+ """,
+ label: 'Download artifacts from S3',
+ )
+
+ add_microtvm_permissions()
+ ci_setup(ci_cortexm)
+ sh (
+ script: "${docker_run} ${ci_cortexm}
./tests/scripts/task_python_microtvm.sh",
+ label: 'Run microTVM tests',
+ )
+ })
+ }
+ } finally {
+ sh(
+ script: """
+ set -eux
+ aws s3 cp --no-progress build/pytest-results
s3://${s3_prefix}/pytest-results --recursive
+ """,
+ label: 'Upload JUnits to S3',
+ )
+
+ junit 'build/pytest-results/*.xml'
+ }
+ }
+ }
+ } else {
+ Utils.markStageSkippedForConditional('test: Cortex-M 7 of 8')
+ }
+}
+
+def shard_run_test_Cortex_M_8_of_8() {
+ if (!skip_ci && is_docs_only_build != 1) {
+ node('CPU-SMALL') {
+ ws("workspace/exec_${env.EXECUTOR_NUMBER}/tvm/test-cortexm") {
+ try {
+ docker_init(ci_cortexm)
+ init_git()
+ timeout(time: max_time, unit: 'MINUTES') {
+ withEnv([
+ 'PLATFORM=cortexm',
+ 'TVM_NUM_SHARDS=8',
+ 'TVM_SHARD_INDEX=7'], {
+ sh(
+ script: """
+ set -eux
+ retry() {
+ local retries=\$1
+ shift
+
+ local count=0
+ until "\$@"; do
+ exit=\$?
+ wait=\$((2 ** \$count))
+ count=\$((\$count + 1))
+ if [ \$count -lt \$retries ]; then
+ echo "Retry \$count/\$retries exited \$exit,
retrying in \$wait seconds..."
+ sleep \$wait
+ else
+ echo "Retry \$count/\$retries exited \$exit,
no more retries left."
+ return \$exit
+ fi
+ done
+ return 0
+ }
+
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so
+ md5sum build/libtvm.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so
+ md5sum build/libtvm_runtime.so
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake
+ md5sum build/config.cmake
+ retry 3 aws s3 cp --no-progress
s3://${s3_prefix}/cortexm/build/microtvm_template_projects
build/microtvm_template_projects --recursive
+ """,
+ label: 'Download artifacts from S3',
+ )
+
+ add_microtvm_permissions()
+ ci_setup(ci_cortexm)
+ sh (
+ script: "${docker_run} ${ci_cortexm}
./tests/scripts/task_python_microtvm.sh",
+ label: 'Run microTVM tests',
+ )
+ })
+ }
+ } finally {
+ sh(
+ script: """
+ set -eux
+ aws s3 cp --no-progress build/pytest-results
s3://${s3_prefix}/pytest-results --recursive
+ """,
+ label: 'Upload JUnits to S3',
+ )
+
+ junit 'build/pytest-results/*.xml'
+ }
+ }
+ }
+ } else {
+ Utils.markStageSkippedForConditional('test: Cortex-M 8 of 8')
}
}
@@ -4696,17 +4984,29 @@ stage('Test') {
'frontend: aarch64 2 of 2': {
shard_run_frontend_aarch64_2_of_2()
},
- 'test: Cortex-M 1 of 4': {
- shard_run_test_Cortex_M_1_of_4()
+ 'test: Cortex-M 1 of 8': {
+ shard_run_test_Cortex_M_1_of_8()
+ },
+ 'test: Cortex-M 2 of 8': {
+ shard_run_test_Cortex_M_2_of_8()
+ },
+ 'test: Cortex-M 3 of 8': {
+ shard_run_test_Cortex_M_3_of_8()
+ },
+ 'test: Cortex-M 4 of 8': {
+ shard_run_test_Cortex_M_4_of_8()
+ },
+ 'test: Cortex-M 5 of 8': {
+ shard_run_test_Cortex_M_5_of_8()
},
- 'test: Cortex-M 2 of 4': {
- shard_run_test_Cortex_M_2_of_4()
+ 'test: Cortex-M 6 of 8': {
+ shard_run_test_Cortex_M_6_of_8()
},
- 'test: Cortex-M 3 of 4': {
- shard_run_test_Cortex_M_3_of_4()
+ 'test: Cortex-M 7 of 8': {
+ shard_run_test_Cortex_M_7_of_8()
},
- 'test: Cortex-M 4 of 4': {
- shard_run_test_Cortex_M_4_of_4()
+ 'test: Cortex-M 8 of 8': {
+ shard_run_test_Cortex_M_8_of_8()
},
'unittest: CPU': {
if (!skip_ci && is_docs_only_build != 1) {
diff --git a/ci/jenkins/Test.groovy.j2 b/ci/jenkins/Test.groovy.j2
index 01623b7de7..b2afdacad7 100644
--- a/ci/jenkins/Test.groovy.j2
+++ b/ci/jenkins/Test.groovy.j2
@@ -192,7 +192,7 @@
ws="tvm/test-cortexm",
platform="cortexm",
docker_image="ci_cortexm",
- num_shards=4,
+ num_shards=8,
test_method_names=test_method_names,
) %}
{{ m.download_artifacts(tag='cortexm', filenames=tvm_lib,
folders=microtvm_template_projects) }}