[CI] [GHA] Introduce the Linux ARM64 workflow (#20809)
* add arm as a matrix for build job * uncomment * comment * try inside pipeline * check location * another dirs * try to privide correct action path * use corrected action * use newer commit * use newer commit * use newer commit * use newer action commit * add setting * rm from pipeline, adapt action iteslf * add missing deps * enable samples and debian jobs * correct yml * correct image name * correct syntax, use self-hosted option * enable onnx runtime and c++, use newer action * enable Python and CPU Func tests * add missing deps for arm64 * increase timeout for python tests * disable some tests, add more time * skip failing tests * skip speech sample test on arm * dummy chang * skip mxnet mo on arm, run all tests * rm quotes * separate linux x86 and arm64 workflows * rm unused matrix refs, add timeouts * add skips for c++ tests and some Python tests * correct cache keys, extend timeout * skip more python tests * add more skips: for python and CPU func * extend cpu func list with skips * disable cpu func tests and python api 2.0 tests * rm disable job * styling, rm pr trigger, rm always(), rm unnecessary changes * revert * use ifs instead of comments, provide better wording for skips
This commit is contained in:
parent
a6903b8398
commit
62f5bd6570
4
.github/actions/setup_python/action.yml
vendored
4
.github/actions/setup_python/action.yml
vendored
@ -26,7 +26,7 @@ runs:
|
||||
- if: ${{ runner.os == 'Linux' && inputs.self-hosted-runner == 'true' }}
|
||||
name: Install 'actions/setup-python@v4' dependencies
|
||||
shell: bash
|
||||
run: apt-get update && apt-get install -y ca-certificates
|
||||
run: apt-get update && apt-get install -y ca-certificates software-properties-common
|
||||
|
||||
- if: ${{ runner.os == 'Linux' && runner.arch == 'ARM64' }}
|
||||
name: Setup sudo
|
||||
@ -35,7 +35,7 @@ runs:
|
||||
|
||||
- if: ${{ runner.os == 'Linux' && runner.arch == 'ARM64' }}
|
||||
name: Setup Python ${{ inputs.version }}
|
||||
uses: deadsnakes/action@v3.0.1
|
||||
uses: akashchi/deadsnakes-action@f01521a69eee61eaca3a34440bea3ce838317846
|
||||
with:
|
||||
python-version: ${{ inputs.version }}
|
||||
|
||||
|
1472
.github/workflows/linux_arm64.yml
vendored
Normal file
1472
.github/workflows/linux_arm64.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -82,7 +82,12 @@ class CompressQuantizeWeightsTests
|
||||
}
|
||||
};
|
||||
|
||||
#ifdef OPENVINO_ARCH_ARM64
|
||||
// Ticket: CVS-122397
|
||||
TEST_P(CompressQuantizeWeightsTests, DISABLED_FusionTest) {}
|
||||
#else
|
||||
TEST_P(CompressQuantizeWeightsTests, FusionTest) {}
|
||||
#endif
|
||||
|
||||
static std::vector<CompressQuantizeWeightsParams> params = {
|
||||
{Shape{2, 3, 1, 1},
|
||||
|
@ -164,3 +164,7 @@ xfail_issue_119919 = xfail_test(reason="While validating ONNX node '<Node(Pad):
|
||||
xfail_issue_119922 = xfail_test(reason="ai.onnx.ml operators domain isn't supported")
|
||||
xfail_issue_119925 = xfail_test(reason="AveragePool AssertionError: Not equal to tolerance rtol=0.001, atol=1e-07")
|
||||
xfail_issue_119926 = xfail_test(reason="ROIAlign AssertionError: Not equal to tolerance rtol=0.001, atol=1e-07")
|
||||
xfail_issue_122776 = xfail_test(reason="test_mish_expanded_cpu - "
|
||||
"Not equal to tolerance")
|
||||
xfail_issue_122775 = xfail_test(reason="test_resize_downsample_scales_linear_cpu - "
|
||||
"Not equal to tolerance")
|
||||
|
@ -392,3 +392,15 @@ IE_CPU.onnx_model_top_k_repeating_unsorted
|
||||
|
||||
# Accuracy regression - Ticket 105909
|
||||
IE_CPU.onnx_model_attention_qkv_hidden_sizes
|
||||
|
||||
# Accuracy issues on ARM CPU - Ticket 122663
|
||||
IE_CPU.onnx_model_bias_gelu
|
||||
IE_CPU.onnx_model_embed_layer_normalization_diff_seq_len_pos_embed_len
|
||||
IE_CPU.onnx_model_embed_layer_normalization_with_position_ids
|
||||
IE_CPU.onnx_resize10_down_scales_const_linear
|
||||
IE_CPU.onnx_resize11_down_scales_linear_asymmetric
|
||||
IE_CPU.onnx_model_softplus
|
||||
IE_CPU.onnx_model_instance_normalization
|
||||
IE_CPU.quant_dequant_pattern_axis
|
||||
IE_CPU/GRUSequenceOp.onnx_model_gru_reverse_mixed_seq_len_const
|
||||
IE_CPU/RNNSequenceOp.onnx_model_rnn_fwd_bias_initial_h_const
|
||||
|
@ -72,6 +72,8 @@ from tests import (
|
||||
xfail_issue_119922,
|
||||
xfail_issue_119925,
|
||||
xfail_issue_119926,
|
||||
xfail_issue_122775,
|
||||
xfail_issue_122776
|
||||
)
|
||||
from tests.tests_python.utils.onnx_backend import OpenVinoTestBackend
|
||||
|
||||
@ -685,6 +687,14 @@ if platform.system() == 'Darwin':
|
||||
)]
|
||||
)
|
||||
|
||||
if platform.system() == 'Linux' and platform.machine() in ['arm', 'armv7l', 'aarch64', 'arm64', 'ARM64']:
|
||||
tests_expected_to_fail.extend(
|
||||
[
|
||||
(xfail_issue_122775, "OnnxBackendNodeModelTest.test_resize_downsample_scales_linear_cpu"),
|
||||
(xfail_issue_122776, "OnnxBackendNodeModelTest.test_mish_expanded_cpu")
|
||||
]
|
||||
)
|
||||
|
||||
for test_group in tests_expected_to_fail:
|
||||
for test_case in test_group[1:]:
|
||||
expect_fail(f"{test_case}", test_group[0])
|
||||
|
@ -26,7 +26,13 @@ TEST_F(CompileModelsTests, NgramCompilation) {
|
||||
EXPECT_EQ(runtime_model->get_results().size(), 1);
|
||||
}
|
||||
|
||||
TEST_F(CompileModelsTests, ModelWithSplitConvConcat) {
|
||||
#ifdef OPENVINO_ARCH_ARM64
|
||||
// Ticket: CVS-122396
|
||||
TEST_F(CompileModelsTests, DISABLED_ModelWithSplitConvConcat)
|
||||
#else
|
||||
TEST_F(CompileModelsTests, ModelWithSplitConvConcat)
|
||||
#endif
|
||||
{
|
||||
{
|
||||
auto model = convert_model("split_conv_concat/split_conv_concat.pbtxt");
|
||||
ov::Core core;
|
||||
|
@ -1027,8 +1027,8 @@ class TestMoConvertPyTorch(CommonMOConvertTest):
|
||||
def __init__(self):
|
||||
super(DataModel, self).__init__()
|
||||
self.data = torch.tensor([1, 2, 3, 4])
|
||||
|
||||
def forward(self, x):
|
||||
|
||||
def forward(self, x):
|
||||
return self.data, x
|
||||
|
||||
data_model = DataModel()
|
||||
@ -1051,13 +1051,13 @@ class TestMoConvertPyTorch(CommonMOConvertTest):
|
||||
def test_sharing_memory_switched_on(self, ie_device, precision, ir_version, temp_dir):
|
||||
from openvino.tools.ovc import convert_model
|
||||
from openvino.runtime import Core
|
||||
|
||||
|
||||
class DataModel(torch.nn.Module):
|
||||
def __init__(self):
|
||||
super(DataModel, self).__init__()
|
||||
self.data = torch.tensor([1, 2, 3, 4])
|
||||
|
||||
def forward(self, x):
|
||||
|
||||
def forward(self, x):
|
||||
return self.data, x
|
||||
|
||||
data_model = DataModel()
|
||||
@ -1236,8 +1236,10 @@ class TestPrecisionSensitive():
|
||||
@pytest.mark.parametrize("create_model", test_data)
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122714')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122714, 122710')
|
||||
def test_precision_sensitive(self, create_model, ie_device, precision, ir_version, temp_dir, use_new_frontend, use_old_api):
|
||||
import numpy.testing as npt
|
||||
from pathlib import Path
|
||||
|
@ -234,8 +234,10 @@ class TestReduceL1L2(OnnxRuntimeLayerTest):
|
||||
@pytest.mark.parametrize("keep_dims", [True, False])
|
||||
@pytest.mark.parametrize("reduce_p", [1, 2])
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122846')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122846, 122783, 126312')
|
||||
def test_reduce_lp_precommit(self, params, keep_dims, reduce_p, ie_device, precision,
|
||||
ir_version, temp_dir, use_old_api):
|
||||
self._test(*self.create_reduce_lp(**params, keep_dims=keep_dims, reduce_p=reduce_p,
|
||||
|
@ -136,8 +136,10 @@ class TestROIAlign(OnnxRuntimeLayerTest):
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Windows', reason="Ticket - 122731")
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122846')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Linux', 'Darwin') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122846, 122783, 126312')
|
||||
def test_roi_alignv10(self, params, ie_device, precision, ir_version, temp_dir, use_old_api):
|
||||
# TODO: ticket for investigating GPU failures: CVS-86300
|
||||
if ie_device != "GPU":
|
||||
|
@ -73,7 +73,9 @@ class TestAll(PytorchLayerTest):
|
||||
])
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122715')
|
||||
def test_all(self, input_shape, d_type, keepdim, ie_device, precision, ir_version):
|
||||
if type(input_shape) is list:
|
||||
|
@ -73,7 +73,9 @@ class TestArgMinArgMax(PytorchLayerTest):
|
||||
@pytest.mark.parametrize("dtype", ["float32", "int32", "int64"])
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122715')
|
||||
def test_argmin_argmax(self, axes, keep_dims, op_type, dtype, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(op_type, axes, keep_dims),
|
||||
|
@ -118,7 +118,9 @@ class TestDivTypes(PytorchLayerTest):
|
||||
]))
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122715')
|
||||
def test_div_types(self, ie_device, precision, ir_version, lhs_type, lhs_shape, rhs_type, rhs_shape, rounding_mode):
|
||||
self.lhs_type = lhs_type
|
||||
|
@ -76,7 +76,9 @@ class TestNativeMultiHeadAttention(PytorchLayerTest):
|
||||
["need_weights", "average_attn_weights"],
|
||||
[[False, False], [True, False], [True, True]]
|
||||
)
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122715')
|
||||
def test_native_multi_head_attention(self, ie_device, precision, ir_version, mask, need_weights, average_attn_weights):
|
||||
self._test(aten_native_multi_head_attention(mask, need_weights, average_attn_weights),
|
||||
|
@ -263,7 +263,9 @@ class TestLinalgMatrixNorm(PytorchLayerTest):
|
||||
@pytest.mark.parametrize("dtype", ["float32", "float64", None])
|
||||
@pytest.mark.parametrize("out", [True, False])
|
||||
@pytest.mark.parametrize("prim_dtype", [True, False])
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Darwin', 'Linux') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 122715')
|
||||
def test_linalg_matrix_norm(self, p, dim, keepdim, dtype, out, prim_dtype, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(p, dim, keepdim, dtype, out, prim_dtype),
|
||||
|
@ -1,6 +1,8 @@
|
||||
# Copyright (C) 2018-2023 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import platform
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
import tensorflow as tf
|
||||
@ -54,6 +56,10 @@ class TestComplexFFT(CommonTFLayerTest):
|
||||
@pytest.mark.parametrize("params", test_data_basic)
|
||||
@pytest.mark.precommit_tf_fe
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Linux' and platform.machine() in ['arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'],
|
||||
reason='Ticket - 126314')
|
||||
def test_complex_fft_basic(self, params, fft_op,
|
||||
ie_device, precision, ir_version, temp_dir,
|
||||
use_new_frontend, use_old_api):
|
||||
|
@ -61,8 +61,10 @@ class TestMaxPoolWithArgmax(CommonTFLayerTest):
|
||||
])
|
||||
@pytest.mark.precommit_tf_fe
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122716')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Linux', 'Darwin') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 126314, 122716')
|
||||
def test_max_pool_with_argmax_basic(self, params, input_type, padding, targmax,
|
||||
include_batch_in_index, with_second_output,
|
||||
ie_device, precision, ir_version, temp_dir,
|
||||
|
@ -32,8 +32,10 @@ class TestNormalizeL2(CommonTFLayerTest):
|
||||
@pytest.mark.precommit
|
||||
@pytest.mark.precommit_tf_fe
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122716')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Linux', 'Darwin') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 126314, 122716')
|
||||
def test_normalize_l2_basic(self, params, ie_device, precision, ir_version, temp_dir,
|
||||
use_new_frontend, use_old_api):
|
||||
self._test(*self.create_normalize_l2_net(**params),
|
||||
|
@ -48,8 +48,10 @@ class TestTopKV2(CommonTFLayerTest):
|
||||
@pytest.mark.parametrize("params", test_basic)
|
||||
@pytest.mark.precommit_tf_fe
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122716')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Linux', 'Darwin') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 126314, 122716')
|
||||
def test_topk_v2_basic(self, params, ie_device, precision, ir_version, temp_dir, use_new_frontend,
|
||||
use_old_api):
|
||||
self._test(*self.create_topk_v2_net(**params),
|
||||
|
@ -44,8 +44,10 @@ class TestTruncateDiv(CommonTFLayerTest):
|
||||
@pytest.mark.parametrize("params", test_data_basic)
|
||||
@pytest.mark.precommit_tf_fe
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.xfail(condition=platform.system() == 'Darwin' and platform.machine() == 'arm64',
|
||||
reason='Ticket - 122716')
|
||||
@pytest.mark.xfail(condition=platform.system() in ('Linux', 'Darwin') and platform.machine() in ('arm', 'armv7l',
|
||||
'aarch64',
|
||||
'arm64', 'ARM64'),
|
||||
reason='Ticket - 126314, 122716')
|
||||
def test_truncate_div_basic(self, params, ie_device, precision, ir_version, temp_dir,
|
||||
use_new_frontend, use_old_api):
|
||||
self._test(*self.create_truncate_div_net(**params),
|
||||
|
@ -12,6 +12,7 @@
|
||||
"""
|
||||
import os
|
||||
import pytest
|
||||
import platform
|
||||
import sys
|
||||
import logging as log
|
||||
from common.samples_common_test_class import SamplesCommonTestClass
|
||||
@ -56,7 +57,8 @@ class TestSpeechSample(SamplesCommonTestClass):
|
||||
super().setup_class()
|
||||
|
||||
@pytest.mark.parametrize("param", test_data)
|
||||
@pytest.mark.skipif(sys.platform == 'darwin', reason="GNA is not available on macOS")
|
||||
@pytest.mark.skipif(condition=platform.system() == 'Darwin' or platform.machine() == 'aarch64',
|
||||
reason="GNA is not available on macOS or aarch64")
|
||||
def test_speech_sample_nthreads(self, param):
|
||||
stdout = self._test(param).split('\n')
|
||||
|
||||
@ -65,7 +67,8 @@ class TestSpeechSample(SamplesCommonTestClass):
|
||||
assert avg_error <= self.threshold
|
||||
|
||||
@pytest.mark.parametrize("param", new_format_test_data)
|
||||
@pytest.mark.skipif(sys.platform == 'darwin', reason="GNA is not available on macOS")
|
||||
@pytest.mark.skipif(condition=platform.system() == 'Darwin' or platform.machine() == 'aarch64',
|
||||
reason="GNA is not available on macOS or aarch64")
|
||||
def test_speech_sample_new_format(self, param):
|
||||
stdout = self._test(param, complete_path=False).split('\n')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user