From 7bceaff9352c8bb09edbb0aacf62ca0285945b2b Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 16 Aug 2021 15:35:39 +0300 Subject: [PATCH 01/18] [CI] Modify Jenkinfile to always display junit report --- Jenkinsfile | 84 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 24 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2beb63bd3c5f..4e072c1d92d6 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -250,11 +250,17 @@ stage('Unit Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" + } catch(err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -265,11 +271,17 @@ stage('Unit Test') { init_git() unpack_lib('i386', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_i386} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_i386} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -280,11 +292,17 @@ stage('Unit Test') { init_git() unpack_lib('arm', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" - junit "build/pytest-results/*.xml" - // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" + try { + sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" + } } } } @@ -310,9 +328,15 @@ stage('Integration Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -323,9 +347,15 @@ stage('Integration Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -336,9 +366,15 @@ stage('Integration Test') { init_git() unpack_lib('cpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } From 2362761fed9ae7584d93e69f8d745671dcf92e7b Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Tue, 17 Aug 2021 11:47:56 +0300 Subject: [PATCH 02/18] [CI] Update jenkins to always displays reports on failed tests --- Jenkinsfile | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4e072c1d92d6..b6c3ce8b68a5 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -181,15 +181,21 @@ stage('Build') { make(ci_cpu, 'build', '-j2') pack_lib('cpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" - // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" - // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" - junit "build/pytest-results/*.xml" + try{ + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" + // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" + // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch + } catch {err} { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -234,9 +240,15 @@ stage('Build') { sh "${docker_run} ${ci_qemu} ./tests/scripts/task_config_build_qemu.sh" make(ci_qemu, 'build', '-j2') timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" - junit "build/pytest-results/*.xml" + try { + sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" + } catch (err) { + echo err.getMessage() + echo "Error detected, check pytest logs..." + } finally { + junit "build/pytest-results/*.xml" + } } } } @@ -353,7 +365,7 @@ stage('Integration Test') { } catch (err) { echo err.getMessage() echo "Error detected, check pytest logs..." - } finally { + } finally { junit "build/pytest-results/*.xml" } } From 293484bff7e5ccea38fccd44edcb7e413bb6ba43 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Fri, 10 Sep 2021 19:46:47 +0300 Subject: [PATCH 03/18] Test --- .github/ISSUE_TEMPLATE/ci-problem.md | 2 +- Jenkinsfile | 8 ++++---- .../reference-vm/arduino/base-box/base_box_provision.sh | 2 +- cmake/modules/Hexagon.cmake | 1 - cmake/modules/HexagonSDK.cmake | 1 - cmake/modules/contrib/EthosU.cmake | 2 +- docs/langref/relay_pattern.rst | 2 +- tests/python/relay/aot/corstone300.mk | 2 +- tests/scripts/task_config_build_i386.sh | 1 - tutorials/auto_scheduler/tune_network_cuda.py | 2 +- tutorials/auto_scheduler/tune_network_x86.py | 2 +- tutorials/frontend/deploy_sparse.py | 6 +++--- 12 files changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/ci-problem.md b/.github/ISSUE_TEMPLATE/ci-problem.md index f46a42f42cf5..5a5977ab5000 100644 --- a/.github/ISSUE_TEMPLATE/ci-problem.md +++ b/.github/ISSUE_TEMPLATE/ci-problem.md @@ -19,4 +19,4 @@ Provide a link to the specific run that has failed. ### Flakiness -Have you seen this multiple times in this branch or in other branches? \ No newline at end of file +Have you seen this multiple times in this branch or in other branches? diff --git a/Jenkinsfile b/Jenkinsfile index d01edfe2d9c6..be0f0f872c19 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -283,7 +283,7 @@ stage('Build') { timeout(time: max_time, unit: 'MINUTES') { try { sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" + sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" } catch (err) { echo err.getMessage() echo "Error detected, check pytest logs..." @@ -328,7 +328,7 @@ stage('Unit Test') { sh "${docker_run} ${ci_i386} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" } catch (err) { echo err.getMessage() echo "Error detected, check pytest logs..." @@ -348,13 +348,13 @@ stage('Unit Test') { try { sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" + sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" } catch (err) { echo err.getMessage() echo "Error detected, check pytest logs..." } finally { junit "build/pytest-results/*.xml" - // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" + // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" } } } diff --git a/apps/microtvm/reference-vm/arduino/base-box/base_box_provision.sh b/apps/microtvm/reference-vm/arduino/base-box/base_box_provision.sh index 11d89f2cd44e..d55100693d5c 100644 --- a/apps/microtvm/reference-vm/arduino/base-box/base_box_provision.sh +++ b/apps/microtvm/reference-vm/arduino/base-box/base_box_provision.sh @@ -16,7 +16,7 @@ # specific language governing permissions and limitations # under the License. # -# Using this script we can reuse docker/install scripts to configure the reference +# Using this script we can reuse docker/install scripts to configure the reference # virtual machine similar to CI QEMU setup. # diff --git a/cmake/modules/Hexagon.cmake b/cmake/modules/Hexagon.cmake index eb3ad1f5ae4a..238e17ba268b 100644 --- a/cmake/modules/Hexagon.cmake +++ b/cmake/modules/Hexagon.cmake @@ -105,4 +105,3 @@ endif() file(GLOB RUNTIME_HEXAGON_SRCS src/runtime/hexagon/*.cc) list(APPEND RUNTIME_SRCS ${RUNTIME_HEXAGON_SRCS} ${RUNTIME_HEXAGON_SIM_SRCS} ${RUNTIME_HEXAGON_DEVICE_SRCS}) - diff --git a/cmake/modules/HexagonSDK.cmake b/cmake/modules/HexagonSDK.cmake index 9541f5be821c..bffbeb1192ee 100644 --- a/cmake/modules/HexagonSDK.cmake +++ b/cmake/modules/HexagonSDK.cmake @@ -120,4 +120,3 @@ function(find_hexagon_sdk_root HEXAGON_SDK_PATH HEXAGON_ARCH) set(FOUND_HEXAGON_SDK_ROOT TRUE) endfunction() - diff --git a/cmake/modules/contrib/EthosU.cmake b/cmake/modules/contrib/EthosU.cmake index 8f3e09b8179b..899f2da1c577 100644 --- a/cmake/modules/contrib/EthosU.cmake +++ b/cmake/modules/contrib/EthosU.cmake @@ -18,4 +18,4 @@ if(USE_ETHOSU) file(GLOB ETHOSU_RELAY_CONTRIB_SRC src/relay/backend/contrib/ethosu/*) list(APPEND COMPILER_SRCS ${ETHOSU_RELAY_CONTRIB_SRC}) -endif(USE_ETHOSU) \ No newline at end of file +endif(USE_ETHOSU) diff --git a/docs/langref/relay_pattern.rst b/docs/langref/relay_pattern.rst index 4682e5aa5b33..16211b2cb125 100644 --- a/docs/langref/relay_pattern.rst +++ b/docs/langref/relay_pattern.rst @@ -89,7 +89,7 @@ Or a convolution with a specific kernel size: x = relay.var('x') y = relay.var('y') assert is_conv2d.match(relay.op.nn.conv2d(x, y, kernel_size=[3, 3])) - + Matching an Optional Op diff --git a/tests/python/relay/aot/corstone300.mk b/tests/python/relay/aot/corstone300.mk index 3a946f2cd876..2f07a3d1cb96 100644 --- a/tests/python/relay/aot/corstone300.mk +++ b/tests/python/relay/aot/corstone300.mk @@ -115,4 +115,4 @@ run: $(build_dir)/aot_test_runner .DEFAULT: aot_test_runner -.PHONY: run \ No newline at end of file +.PHONY: run diff --git a/tests/scripts/task_config_build_i386.sh b/tests/scripts/task_config_build_i386.sh index 298259682972..86ebb0c4f19f 100755 --- a/tests/scripts/task_config_build_i386.sh +++ b/tests/scripts/task_config_build_i386.sh @@ -35,4 +35,3 @@ echo set\(USE_VTA_FSIM ON\) >> config.cmake echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VERILATOR ON\) >> config.cmake echo set\(USE_CCACHE OFF\) >> config.cmake - diff --git a/tutorials/auto_scheduler/tune_network_cuda.py b/tutorials/auto_scheduler/tune_network_cuda.py index 08c15264e3c1..fb555235ceae 100644 --- a/tutorials/auto_scheduler/tune_network_cuda.py +++ b/tutorials/auto_scheduler/tune_network_cuda.py @@ -23,7 +23,7 @@ best performance. This is a tutorial on how to tune a whole neural network for NVIDIA GPU with the auto-scheduler. -To auto-tune a neural network, we partition the network into small subgraphs and +To auto-tune a neural network, we partition the network into small subgraphs and tune them independently. Each subgraph is treated as one search task. A task scheduler slices the time and dynamically allocates time resources to these tasks. The task scheduler predicts the impact of each task on the end-to-end diff --git a/tutorials/auto_scheduler/tune_network_x86.py b/tutorials/auto_scheduler/tune_network_x86.py index 6cb8d6f14cb9..665e20e003b3 100644 --- a/tutorials/auto_scheduler/tune_network_x86.py +++ b/tutorials/auto_scheduler/tune_network_x86.py @@ -24,7 +24,7 @@ best performance. This is a tutorial on how to tune a whole neural network for x86 CPU with the auto-scheduler. -To auto-tune a neural network, we partition the network into small subgraphs and +To auto-tune a neural network, we partition the network into small subgraphs and tune them independently. Each subgraph is treated as one search task. A task scheduler slices the time and dynamically allocates time resources to these tasks. The task scheduler predicts the impact of each task on the end-to-end diff --git a/tutorials/frontend/deploy_sparse.py b/tutorials/frontend/deploy_sparse.py index 768a697f45cf..05926c847730 100644 --- a/tutorials/frontend/deploy_sparse.py +++ b/tutorials/frontend/deploy_sparse.py @@ -36,7 +36,7 @@ Pruning is a technique primarily used to reduce the parameter size of a model by replacing weight values with 0s. Although many methods exist for choosing which -weights should be set to 0, the most straight forward is by picking the +weights should be set to 0, the most straight forward is by picking the weights with the smallest value. Typically, weights are pruned to a desired sparsity percentage. For example, a 95% sparse model would have only 5% of its weights non-zero. Pruning to very high sparsities often requires @@ -50,8 +50,8 @@ value and location. The benefit of bunching up pruned weights is that it allows an algorithm such as matrix multiplication to skip entire blocks. It turns out that some degree of *block sparsity* is very important to realizing significant -speedups on most hardware available today. -This is because when loading memory in most CPUs or GPUs, +speedups on most hardware available today. +This is because when loading memory in most CPUs or GPUs, it doesn't save any work to skip reading a single value at a time, instead an entire chunk or tile is read in and executed using something like vectorized instructions. From ddcc905f746c94e8a7adb433e6f9f5913499a919 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:03:57 +0300 Subject: [PATCH 04/18] Test --- Jenkinsfile | 125 +++++++++++++++++----------------------------------- README.md | 3 +- 2 files changed, 43 insertions(+), 85 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index be0f0f872c19..68a0c1baa39d 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -201,6 +201,11 @@ def unpack_lib(name, libs) { } stage('Build') { + when { + not { + changeset pattern: "/(?i)\.(?:md|txt)$/", comparator: "REGEXP" + } + } parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { @@ -222,21 +227,15 @@ stage('Build') { make(ci_cpu, 'build', '-j2') pack_lib('cpu', tvm_multilib_tsim) timeout(time: max_time, unit: 'MINUTES') { - try{ - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" - // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" - // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch - } catch {err} { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" + // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" + // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" + junit "build/pytest-results/*.xml" } } } @@ -281,15 +280,9 @@ stage('Build') { sh "${docker_run} ${ci_qemu} ./tests/scripts/task_config_build_qemu.sh" make(ci_qemu, 'build', '-j2') timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" + junit "build/pytest-results/*.xml" } } } @@ -303,17 +296,11 @@ stage('Unit Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" - } catch(err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" + junit "build/pytest-results/*.xml" } } } @@ -324,17 +311,11 @@ stage('Unit Test') { init_git() unpack_lib('i386', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_i386} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_i386} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" + junit "build/pytest-results/*.xml" } } } @@ -345,17 +326,11 @@ stage('Unit Test') { init_git() unpack_lib('arm', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" - } + sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" + junit "build/pytest-results/*.xml" + // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" } } } @@ -381,15 +356,9 @@ stage('Integration Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh" + junit "build/pytest-results/*.xml" } } } @@ -400,15 +369,9 @@ stage('Integration Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh" + junit "build/pytest-results/*.xml" } } } @@ -419,15 +382,9 @@ stage('Integration Test') { init_git() unpack_lib('cpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - try { - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh" - } catch (err) { - echo err.getMessage() - echo "Error detected, check pytest logs..." - } finally { - junit "build/pytest-results/*.xml" - } + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh" + junit "build/pytest-results/*.xml" } } } diff --git a/README.md b/README.md index 09ceb7ab1d07..dc9ac5f54f38 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,8 @@ Apache TVM is a compiler stack for deep learning systems. It is designed to close the gap between the productivity-focused deep learning frameworks, and the performance- and efficiency-focused hardware backends. -TVM works with deep learning frameworks to provide end to end compilation to different backends. +TVM works with +deep learning frameworks to provide end to end compilation to different backends. License ------- From 8dc26a5d109dae188ab38d74fb468f21cbc539f8 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:04:19 +0300 Subject: [PATCH 05/18] Test --- Jenkinsfile | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 68a0c1baa39d..05b1093994aa 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -203,7 +203,7 @@ def unpack_lib(name, libs) { stage('Build') { when { not { - changeset pattern: "/(?i)\.(?:md|txt)$/", comparator: "REGEXP" + changeset pattern: "/(?i)\.(?:md|txt)$/", comparator: "REGEXP" } } parallel 'BUILD: GPU': { diff --git a/README.md b/README.md index dc9ac5f54f38..a8183bd87e70 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Apache TVM is a compiler stack for deep learning systems. It is designed to close the gap between the productivity-focused deep learning frameworks, and the performance- and efficiency-focused hardware backends. -TVM works with +TVM works with deep learning frameworks to provide end to end compilation to different backends. License From bed63fc895348a3de8908e544abd802c8d42a593 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:14:21 +0300 Subject: [PATCH 06/18] Test --- Jenkinsfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 05b1093994aa..d1a2dd55d10a 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -111,6 +111,14 @@ def init_git_win() { } } +def changedFiles = currentBuild.changeSets + .collect{ it.getItems() } + .flatten() //Ensures that we look through each commit, not just the first. + .collect{ it.getAffectedPaths() } + .flatten() + .toSet() //Ensures uniqueness. +echo("Changed files: ${changedFiles}") + def cancel_previous_build() { // cancel previous build if it is not on main. if (env.BRANCH_NAME != "main") { @@ -201,11 +209,7 @@ def unpack_lib(name, libs) { } stage('Build') { - when { - not { - changeset pattern: "/(?i)\.(?:md|txt)$/", comparator: "REGEXP" - } - } + changedFiles() parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { From 811bdcfad5c97291156e7f94879b78973aa0ecaa Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:14:33 +0300 Subject: [PATCH 07/18] Test --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d1a2dd55d10a..89544628e2dc 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -209,7 +209,7 @@ def unpack_lib(name, libs) { } stage('Build') { - changedFiles() + changedFiles() parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { From ab1bdb784f7742665d65dd73b687687879f4e763 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:19:39 +0300 Subject: [PATCH 08/18] Test --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 89544628e2dc..dfa7ced9f953 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -157,6 +157,7 @@ stage('Prepare') { } stage("Sanity Check") { + changedFiles() timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { @@ -209,7 +210,6 @@ def unpack_lib(name, libs) { } stage('Build') { - changedFiles() parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { From a30eb868cd982bda7629c3d212aff485a472590d Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:21:16 +0300 Subject: [PATCH 09/18] Test --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index dfa7ced9f953..a3791093b333 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -117,7 +117,6 @@ def changedFiles = currentBuild.changeSets .collect{ it.getAffectedPaths() } .flatten() .toSet() //Ensures uniqueness. -echo("Changed files: ${changedFiles}") def cancel_previous_build() { // cancel previous build if it is not on main. @@ -157,7 +156,7 @@ stage('Prepare') { } stage("Sanity Check") { - changedFiles() + echo("Changed files: ${changedFiles}") timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { From fdc8e5f742599261b453adabd31abeb05a73cf2d Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:25:47 +0300 Subject: [PATCH 10/18] Test --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a8183bd87e70..23888dd12de6 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,8 @@ [![WinMacBuild](https://github.com/apache/tvm/workflows/WinMacBuild/badge.svg)](https://github.com/apache/tvm/actions?query=workflow%3AWinMacBuild) Apache TVM is a compiler stack for deep learning systems. It is designed to close the gap between the -productivity-focused deep learning frameworks, and the performance- and efficiency-focused hardware backends. +productivity-focused +deep learning frameworks, and the performance- and efficiency-focused hardware backends. TVM works with deep learning frameworks to provide end to end compilation to different backends. From 141b6658dc0ca5d562725afa40d715aa4e0ff683 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:26:03 +0300 Subject: [PATCH 11/18] Test --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23888dd12de6..cdd178492c3c 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ [![WinMacBuild](https://github.com/apache/tvm/workflows/WinMacBuild/badge.svg)](https://github.com/apache/tvm/actions?query=workflow%3AWinMacBuild) Apache TVM is a compiler stack for deep learning systems. It is designed to close the gap between the -productivity-focused +productivity-focused deep learning frameworks, and the performance- and efficiency-focused hardware backends. TVM works with deep learning frameworks to provide end to end compilation to different backends. From 0558f3a8eadf11f4acbd30d0afe76c15e8f3ca39 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:32:08 +0300 Subject: [PATCH 12/18] Test jk --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cdd178492c3c..ee43174705ff 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ [![WinMacBuild](https://github.com/apache/tvm/workflows/WinMacBuild/badge.svg)](https://github.com/apache/tvm/actions?query=workflow%3AWinMacBuild) Apache TVM is a compiler stack for deep learning systems. It is designed to close the gap between the +ASDADA productivity-focused deep learning frameworks, and the performance- and efficiency-focused hardware backends. TVM works with From b22ce1722b4df38148f800a17c026f26f9e420d9 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 12:51:13 +0300 Subject: [PATCH 13/18] Test --- Jenkinsfile | 7 ++++++- docs/t.txt | 0 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/t.txt diff --git a/Jenkinsfile b/Jenkinsfile index a3791093b333..65e2d337d07a 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -156,7 +156,12 @@ stage('Prepare') { } stage("Sanity Check") { - echo("Changed files: ${changedFiles}") + when { + anyOf { + changeset "docs/**" + changeset "tutorials/**" + } + } timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { diff --git a/docs/t.txt b/docs/t.txt new file mode 100644 index 000000000000..e69de29bb2d1 From a038cb19205547df8b28da1f8c2e66f107efb3b5 Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 13:02:12 +0300 Subject: [PATCH 14/18] Test --- Jenkinsfile | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 65e2d337d07a..8a3dc385bf82 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -156,12 +156,6 @@ stage('Prepare') { } stage("Sanity Check") { - when { - anyOf { - changeset "docs/**" - changeset "tutorials/**" - } - } timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { @@ -214,6 +208,13 @@ def unpack_lib(name, libs) { } stage('Build') { + when { + not { + allOf { + changeset "docs/**" + } + } + } parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { @@ -298,6 +299,13 @@ stage('Build') { } stage('Unit Test') { + when { + not { + allOf { + changeset "docs/**" + } + } + } parallel 'python3: GPU': { node('TensorCore') { ws(per_exec_ws("tvm/ut-python-gpu")) { From 02f99c6fc632e2ed015f76d63af0da63576be6ec Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Mon, 13 Sep 2021 13:19:48 +0300 Subject: [PATCH 15/18] Test --- Jenkinsfile | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d99a88a07813..17f32313861a 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -111,13 +111,6 @@ def init_git_win() { } } -def changedFiles = currentBuild.changeSets - .collect{ it.getItems() } - .flatten() //Ensures that we look through each commit, not just the first. - .collect{ it.getAffectedPaths() } - .flatten() - .toSet() //Ensures uniqueness. - def cancel_previous_build() { // cancel previous build if it is not on main. if (env.BRANCH_NAME != "main") { @@ -156,7 +149,6 @@ stage('Prepare') { } stage("Sanity Check") { - timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { init_git() @@ -210,9 +202,7 @@ def unpack_lib(name, libs) { stage('Build') { when { not { - allOf { - changeset "docs/**" - } + changeset "docs/**" } } parallel 'BUILD: GPU': { @@ -301,9 +291,7 @@ stage('Build') { stage('Unit Test') { when { not { - allOf { - changeset "docs/**" - } + changeset "docs/**" } } parallel 'python3: GPU': { From 75ac33c9e0391e3ae2aaeeb7ee796f488463d09b Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Wed, 15 Sep 2021 13:07:07 +0300 Subject: [PATCH 16/18] Test --- Jenkinsfile | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 17f32313861a..7b28e3599003 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -149,6 +149,7 @@ stage('Prepare') { } stage("Sanity Check") { + timeout(time: max_time, unit: 'MINUTES') { node('CPU') { ws(per_exec_ws("tvm/sanity")) { init_git() @@ -200,11 +201,6 @@ def unpack_lib(name, libs) { } stage('Build') { - when { - not { - changeset "docs/**" - } - } parallel 'BUILD: GPU': { node('GPUBUILD') { ws(per_exec_ws("tvm/build-gpu")) { @@ -227,14 +223,23 @@ stage('Build') { pack_lib('cpu', tvm_multilib_tsim) timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" - // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" - // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" - junit "build/pytest-results/*.xml" + script { + try { + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" + // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" + // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" + } catch(all) { + sh """ + echo "Failed test" + """ + } finally { + junit "build/pytest-results/*.xml" + } + } } } } @@ -289,11 +294,6 @@ stage('Build') { } stage('Unit Test') { - when { - not { - changeset "docs/**" - } - } parallel 'python3: GPU': { node('TensorCore') { ws(per_exec_ws("tvm/ut-python-gpu")) { From 76b57cf9411fc6c3a8fe117d2d631743bf4de35f Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Wed, 15 Sep 2021 13:14:30 +0300 Subject: [PATCH 17/18] Add Jenkinsfile --- Jenkinsfile | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7b28e3599003..c2be71db2169 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -234,7 +234,7 @@ stage('Build') { sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" } catch(all) { sh """ - echo "Failed test" + echo "Failed tvm/build-cpu" """ } finally { junit "build/pytest-results/*.xml" @@ -300,11 +300,20 @@ stage('Unit Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" - junit "build/pytest-results/*.xml" + script { + try { + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" + } catch (all) { + sh """ + echo "Failed tvm/ut-python-gpu" + """ + } finally { + junit "build/pytest-results/*.xml" + } + } } } } From 0da51c3793a720695567ea7475d1b1dca14dd7ef Mon Sep 17 00:00:00 2001 From: Michalis Papadimitriou Date: Wed, 15 Sep 2021 13:43:12 +0300 Subject: [PATCH 18/18] [CI] Add post action to register failed tests with Junit --- Jenkinsfile | 92 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c2be71db2169..7d0d7534aa3b 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -153,7 +153,7 @@ stage("Sanity Check") { node('CPU') { ws(per_exec_ws("tvm/sanity")) { init_git() - sh "${docker_run} ${ci_lint} ./tests/scripts/task_lint.sh" + // sh "${docker_run} ${ci_lint} ./tests/scripts/task_lint.sh" } } } @@ -223,27 +223,22 @@ stage('Build') { pack_lib('cpu', tvm_multilib_tsim) timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" - script { - try { - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" - // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" - // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" - } catch(all) { - sh """ - echo "Failed tvm/build-cpu" - """ - } finally { - junit "build/pytest-results/*.xml" - } - } + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" + // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" + // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch + sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" } } } - }, + post { + always { + junit "build/pytest-results/*.xml" + } + } + }, 'BUILD: WASM': { node('CPU') { ws(per_exec_ws("tvm/build-wasm")) { @@ -286,10 +281,14 @@ stage('Build') { timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_qemu} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_qemu} ./tests/scripts/task_python_microtvm.sh" - junit "build/pytest-results/*.xml" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } } } @@ -300,23 +299,18 @@ stage('Unit Test') { init_git() unpack_lib('gpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - script { - try { - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" - sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" - } catch (all) { - sh """ - echo "Failed tvm/ut-python-gpu" - """ - } finally { - junit "build/pytest-results/*.xml" - } - } + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_sphinx_precheck.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh" + sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_integration_gpuonly.sh" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'python3: i386': { node('CPU') { @@ -328,10 +322,14 @@ stage('Unit Test') { sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_unittest.sh" sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration.sh" sh "${docker_run} ${ci_i386} ./tests/scripts/task_python_vta_fsim.sh" - junit "build/pytest-results/*.xml" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'python3: arm': { node('ARM') { @@ -342,11 +340,15 @@ stage('Unit Test') { sh "${docker_run} ${ci_arm} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_unittest.sh" sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh" - junit "build/pytest-results/*.xml" // sh "${docker_run} ${ci_arm} ./tests/scripts/task_python_integration.sh" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'java: GPU': { node('GPU') { @@ -371,10 +373,14 @@ stage('Integration Test') { timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh" - junit "build/pytest-results/*.xml" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'frontend: GPU': { node('GPU') { @@ -384,10 +390,14 @@ stage('Integration Test') { timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_gpu} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh" - junit "build/pytest-results/*.xml" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'frontend: CPU': { node('CPU') { @@ -397,10 +407,14 @@ stage('Integration Test') { timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh" - junit "build/pytest-results/*.xml" } } } + post { + always { + junit "build/pytest-results/*.xml" + } + } }, 'docs: GPU': { node('TensorCore') {