From 2efd2b196f461983d2563c32d5d330a51cf88e93 Mon Sep 17 00:00:00 2001 From: Georgy Krivoruchko Date: Tue, 8 Oct 2024 18:56:03 +0400 Subject: [PATCH 1/9] [ONNX] Added support for dynamic input shapes in com.microsoft.MatMulNBits (#26898) ### Details: - Added option to receive an input with dynamic shape, shape must be calculated later while shape inference ### Tickets: - N/A --- .../src/op/com.microsoft/matmulnbits.cpp | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/frontends/onnx/frontend/src/op/com.microsoft/matmulnbits.cpp b/src/frontends/onnx/frontend/src/op/com.microsoft/matmulnbits.cpp index 5b8a439933efd1..0db8f11c4f214f 100644 --- a/src/frontends/onnx/frontend/src/op/com.microsoft/matmulnbits.cpp +++ b/src/frontends/onnx/frontend/src/op/com.microsoft/matmulnbits.cpp @@ -59,8 +59,9 @@ ov::OutputVector matmulnbits(const ov::frontend::onnx::Node& node) { "Expected rank of quantized weights is 3 [N][n_blocks_per_col][blob_size], got: ", b_quantized.get_partial_shape().rank()); CHECK_VALID_NODE(node, - a.get_element_type() == ov::element::f16 || a.get_element_type() == ov::element::f32, - "Unsupported input A type, accepted FP16, FP32, got: ", + a.get_element_type() == ov::element::f16 || a.get_element_type() == ov::element::f32 || + a.get_element_type() == ov::element::dynamic, + "Unsupported input A type, accepted dynamic, FP16, FP32, got: ", a.get_element_type()); CHECK_VALID_NODE( node, @@ -96,7 +97,9 @@ ov::OutputVector matmulnbits(const ov::frontend::onnx::Node& node) { if (inputs.size() > 5) { bias = inputs[5]; CHECK_VALID_NODE(node, - bias.get_element_type() == a.get_element_type(), + bias.get_element_type() == a.get_element_type() || + a.get_element_type() == ov::element::dynamic || + bias.get_element_type() == ov::element::dynamic, "Unsupported input bias type, must be equal to input A type, got: ", bias.get_element_type()); CHECK_VALID_NODE(node, @@ -121,17 +124,35 @@ ov::OutputVector matmulnbits(const ov::frontend::onnx::Node& node) { case 2: casted_b_shape = ov::Shape{static_cast(N * n_blocks_per_col), static_cast(blob_size * 4)}; casted_b = std::make_shared(ov::element::u2, casted_b_shape, b_const->get_data_ptr()); - default_zp = std::make_shared(a.get_element_type(), Shape{}, 2); + if (a.get_element_type() != ov::element::dynamic) { + default_zp = std::make_shared(a.get_element_type(), Shape{}, 2); + } else { + default_zp = + std::make_shared(a, + std::make_shared(ov::element::f32, Shape{}, 2.f)); + } break; case 4: casted_b_shape = ov::Shape{static_cast(N * n_blocks_per_col), static_cast(blob_size * 2)}; casted_b = std::make_shared(ov::element::u4, casted_b_shape, b_const->get_data_ptr()); - default_zp = std::make_shared(a.get_element_type(), Shape{}, 8); + if (a.get_element_type() != ov::element::dynamic) { + default_zp = std::make_shared(a.get_element_type(), Shape{}, 8); + } else { + default_zp = + std::make_shared(a, + std::make_shared(ov::element::f32, Shape{}, 8.f)); + } break; case 8: casted_b_shape = ov::Shape{static_cast(N * n_blocks_per_col), static_cast(blob_size)}; casted_b = op::util::reshape(b_const, casted_b_shape); - default_zp = std::make_shared(a.get_element_type(), Shape{}, 128); + if (a.get_element_type() != ov::element::dynamic) { + default_zp = std::make_shared(a.get_element_type(), Shape{}, 128); + } else { + default_zp = + std::make_shared(a, + std::make_shared(ov::element::f32, Shape{}, 128.f)); + } break; default: FRONT_END_THROW("Unsupported bits count"); From ed53a64ef73795189a735448f900e1b0cae7c5ed Mon Sep 17 00:00:00 2001 From: Mikhail Ryzhov Date: Tue, 8 Oct 2024 18:13:38 +0200 Subject: [PATCH 2/9] [GHA] use pigz with tar (#26954) ### Details: - Use parallel packaging and extraction to speed up workflows ### Tickets: - *ticket-id* --- .github/dockerfiles/docker_tag | 2 +- .../dockerfiles/ov_build/debian_10_arm/Dockerfile | 2 ++ .github/dockerfiles/ov_build/fedora_29/Dockerfile | 2 ++ .../ov_build/ubuntu_20_04_arm64/Dockerfile | 2 ++ .../dockerfiles/ov_build/ubuntu_20_04_x64/Dockerfile | 2 ++ .../ov_build/ubuntu_20_04_x64_nvidia/Dockerfile | 2 ++ .../ov_build/ubuntu_22_04_riscv/Dockerfile | 2 ++ .../dockerfiles/ov_build/ubuntu_22_04_x64/Dockerfile | 2 ++ .../ov_build/ubuntu_22_04_x64_cc/Dockerfile | 2 ++ .../ov_build/ubuntu_22_04_x64_dpcpp/Dockerfile | 2 ++ .../ov_build/ubuntu_22_04_x64_nvidia/Dockerfile | 2 ++ .../dockerfiles/ov_build/ubuntu_24_04_x64/Dockerfile | 2 ++ .../ov_test/ubuntu_20_04_arm64/Dockerfile | 2 ++ .../dockerfiles/ov_test/ubuntu_20_04_x64/Dockerfile | 2 ++ .../dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile | 2 ++ .../dockerfiles/ov_test/ubuntu_24_04_x64/Dockerfile | 2 ++ .github/workflows/build_doc.yml | 2 +- .github/workflows/coverity.yml | 4 ++-- .github/workflows/dev_cpu_linux_snippets_libxsmm.yml | 12 ++++++------ .github/workflows/job_build_linux.yml | 6 +++--- .github/workflows/job_cpu_functional_tests.yml | 4 ++-- .github/workflows/job_cxx_unit_tests.yml | 4 ++-- .github/workflows/job_gpu_tests.yml | 4 ++-- .github/workflows/job_jax_models_tests.yml | 4 ++-- .github/workflows/job_onnx_models_tests.yml | 4 ++-- .github/workflows/job_onnx_runtime.yml | 2 +- .github/workflows/job_python_unit_tests.yml | 4 ++-- .github/workflows/job_pytorch_layer_tests.yml | 4 ++-- .github/workflows/job_pytorch_models_tests.yml | 4 ++-- .github/workflows/job_samples_tests.yml | 4 ++-- .github/workflows/job_tensorflow_layer_tests.yml | 4 ++-- .github/workflows/job_tensorflow_models_tests.yml | 4 ++-- .github/workflows/job_tokenizers.yml | 2 +- .github/workflows/linux_conditional_compilation.yml | 8 ++++---- .github/workflows/linux_sanitizers.yml | 8 ++++---- .github/workflows/mac.yml | 4 ++-- .github/workflows/mac_arm64.yml | 4 ++-- .github/workflows/ubuntu_22.yml | 12 ++++++------ 38 files changed, 85 insertions(+), 55 deletions(-) diff --git a/.github/dockerfiles/docker_tag b/.github/dockerfiles/docker_tag index 413b6019a3b0be..71aa82072f1638 100644 --- a/.github/dockerfiles/docker_tag +++ b/.github/dockerfiles/docker_tag @@ -1 +1 @@ -pr-26586 \ No newline at end of file +pr-26954 \ No newline at end of file diff --git a/.github/dockerfiles/ov_build/debian_10_arm/Dockerfile b/.github/dockerfiles/ov_build/debian_10_arm/Dockerfile index 85cabbd04020dd..0f64afbb20fdc2 100644 --- a/.github/dockerfiles/ov_build/debian_10_arm/Dockerfile +++ b/.github/dockerfiles/ov_build/debian_10_arm/Dockerfile @@ -19,6 +19,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Pythons \ python3 \ python3-pip \ diff --git a/.github/dockerfiles/ov_build/fedora_29/Dockerfile b/.github/dockerfiles/ov_build/fedora_29/Dockerfile index 17797df62f08db..e5f400e2915e9c 100644 --- a/.github/dockerfiles/ov_build/fedora_29/Dockerfile +++ b/.github/dockerfiles/ov_build/fedora_29/Dockerfile @@ -18,6 +18,8 @@ RUN yum update -y && yum install -y \ tar \ gcc \ gcc-c++ \ + # parallel gzip + pigz \ xz # Install build dependencies diff --git a/.github/dockerfiles/ov_build/ubuntu_20_04_arm64/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_20_04_arm64/Dockerfile index 54c1910c7c3385..c7d0e95164f414 100644 --- a/.github/dockerfiles/ov_build/ubuntu_20_04_arm64/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_20_04_arm64/Dockerfile @@ -23,6 +23,8 @@ RUN apt-get update && \ ca-certificates \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Pythons python3.8-dev \ python3.8-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_20_04_x64/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_20_04_x64/Dockerfile index 886ed15a634974..53829ad50b2975 100644 --- a/.github/dockerfiles/ov_build/ubuntu_20_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_20_04_x64/Dockerfile @@ -22,6 +22,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Pythons python3.9-dev \ python3.9-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_20_04_x64_nvidia/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_20_04_x64_nvidia/Dockerfile index 24a78efea17cad..5df369bbb6398a 100644 --- a/.github/dockerfiles/ov_build/ubuntu_20_04_x64_nvidia/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_20_04_x64_nvidia/Dockerfile @@ -24,6 +24,8 @@ RUN apt-get update && \ ca-certificates \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Pythons python3.8-dev \ python3.8-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_22_04_riscv/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_22_04_riscv/Dockerfile index 5a34bcbe7615b4..5911016b37d008 100644 --- a/.github/dockerfiles/ov_build/ubuntu_22_04_riscv/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_22_04_riscv/Dockerfile @@ -30,6 +30,8 @@ RUN apt-get update && \ ca-certificates \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python \ python3-dev \ python3-pip \ diff --git a/.github/dockerfiles/ov_build/ubuntu_22_04_x64/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_22_04_x64/Dockerfile index 80e3c0259dc482..56dffb11e7ce12 100644 --- a/.github/dockerfiles/ov_build/ubuntu_22_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_22_04_x64/Dockerfile @@ -23,6 +23,8 @@ RUN apt-get update && \ gpg-agent \ tzdata \ libtbb2 \ + # parallel gzip + pigz \ # Pythons \ python3.11-dev \ python3.11-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_cc/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_cc/Dockerfile index ac924bbc8171b9..4e044eab71ef84 100644 --- a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_cc/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_cc/Dockerfile @@ -24,6 +24,8 @@ RUN apt-get update && \ gpg-agent \ tzdata \ libtbb2 \ + # parallel gzip + pigz \ # Pythons python3.8-dev \ python3.8-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_dpcpp/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_dpcpp/Dockerfile index 8146ca89a99094..03e8246d6ddc32 100644 --- a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_dpcpp/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_dpcpp/Dockerfile @@ -25,6 +25,8 @@ RUN apt-get update && \ gpg-agent \ tzdata \ libtbb2 \ + # parallel gzip + pigz \ # Pythons \ python3.11-dev \ python3.11-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_nvidia/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_nvidia/Dockerfile index 1d92c6e92b4d6b..19f3e136995dc3 100644 --- a/.github/dockerfiles/ov_build/ubuntu_22_04_x64_nvidia/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_22_04_x64_nvidia/Dockerfile @@ -23,6 +23,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3.11-dev \ python3.11-venv \ diff --git a/.github/dockerfiles/ov_build/ubuntu_24_04_x64/Dockerfile b/.github/dockerfiles/ov_build/ubuntu_24_04_x64/Dockerfile index e92026bdefae2e..82a51ffc0b175e 100644 --- a/.github/dockerfiles/ov_build/ubuntu_24_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_build/ubuntu_24_04_x64/Dockerfile @@ -22,6 +22,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3-dev \ python3-venv \ diff --git a/.github/dockerfiles/ov_test/ubuntu_20_04_arm64/Dockerfile b/.github/dockerfiles/ov_test/ubuntu_20_04_arm64/Dockerfile index 3f2359fbd61358..e46a1a2ea03ef6 100644 --- a/.github/dockerfiles/ov_test/ubuntu_20_04_arm64/Dockerfile +++ b/.github/dockerfiles/ov_test/ubuntu_20_04_arm64/Dockerfile @@ -23,6 +23,8 @@ RUN apt-get update && \ ca-certificates \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3.11-dev \ python3.11-venv \ diff --git a/.github/dockerfiles/ov_test/ubuntu_20_04_x64/Dockerfile b/.github/dockerfiles/ov_test/ubuntu_20_04_x64/Dockerfile index 38c377724f3ffe..9c6b4b08f498fa 100644 --- a/.github/dockerfiles/ov_test/ubuntu_20_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_test/ubuntu_20_04_x64/Dockerfile @@ -22,6 +22,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3.9-dev \ python3.9-venv \ diff --git a/.github/dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile b/.github/dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile index 410a3f401949f2..2c68ea12d7b58f 100644 --- a/.github/dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile @@ -23,6 +23,8 @@ RUN apt-get update && \ ca-certificates \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3.11-dev \ python3.11-venv \ diff --git a/.github/dockerfiles/ov_test/ubuntu_24_04_x64/Dockerfile b/.github/dockerfiles/ov_test/ubuntu_24_04_x64/Dockerfile index aa09c6015fddf2..4cb29c0174476f 100644 --- a/.github/dockerfiles/ov_test/ubuntu_24_04_x64/Dockerfile +++ b/.github/dockerfiles/ov_test/ubuntu_24_04_x64/Dockerfile @@ -20,6 +20,8 @@ RUN apt-get update && \ git \ gpg-agent \ tzdata \ + # parallel gzip + pigz \ # Python python3-full \ libhdf5-dev \ diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index ec08a12352d0f4..c3c7fc296ade61 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -48,7 +48,7 @@ jobs: run: | # install doxygen wget https://www.doxygen.nl/files/doxygen-$DOXY_VER.linux.bin.tar.gz - tar -xzf doxygen-$DOXY_VER.linux.bin.tar.gz + tar -I pigz -xf doxygen-$DOXY_VER.linux.bin.tar.gz echo "$(pwd)/doxygen-$DOXY_VER/bin/" >> $GITHUB_PATH - name: Validate benchmarks files diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 25daf31604ab18..604ca0fdb81b29 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -103,7 +103,7 @@ jobs: rm -rf ${COVERITY_TOOL_DIR} && mkdir -p ${COVERITY_TOOL_DIR} pushd ${COVERITY_TOOL_DIR} wget https://scan.coverity.com/download/linux64 --progress=bar:force:noscroll --post-data "token=${{ secrets.COVERITY_TOKEN }}&project=openvino" -O coverity_tool.tgz - tar xvf coverity_tool.tgz && rm coverity_tool.tgz + tar -I pigz -xf coverity_tool.tgz && rm coverity_tool.tgz popd - name: Cmake build - OpenVINO with Coverity @@ -112,7 +112,7 @@ jobs: - name: Pack Artefacts run: | pushd ${BUILD_DIR} - tar -C ${BUILD_DIR} -czvf openvino.tgz cov-int + tar -C ${BUILD_DIR} -I pigz -cvf openvino.tgz cov-int popd - name: Submit artefacts diff --git a/.github/workflows/dev_cpu_linux_snippets_libxsmm.yml b/.github/workflows/dev_cpu_linux_snippets_libxsmm.yml index fef0b0dec8b433..c2da4c1b2d2f9c 100644 --- a/.github/workflows/dev_cpu_linux_snippets_libxsmm.yml +++ b/.github/workflows/dev_cpu_linux_snippets_libxsmm.yml @@ -158,11 +158,11 @@ jobs: run: | pushd ${INSTALL_DIR} - tar -czvf ${BUILD_DIR}/openvino_package.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_package.tar.gz * popd pushd ${INSTALL_TEST_DIR} - tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_tests.tar.gz * popd # @@ -230,11 +230,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Snippets func tests @@ -287,11 +287,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Fetch setup_python action diff --git a/.github/workflows/job_build_linux.yml b/.github/workflows/job_build_linux.yml index 0520336ccd20c0..5ea7e0638546a4 100644 --- a/.github/workflows/job_build_linux.yml +++ b/.github/workflows/job_build_linux.yml @@ -189,15 +189,15 @@ jobs: cp -R ${ONNX_RUNTIME_UTILS} ${INSTALL_DIR} pushd ${INSTALL_DIR} - tar -czvf ${BUILD_DIR}/openvino_package.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_package.tar.gz * popd pushd ${DEVELOPER_PACKAGE_DIR} - tar -czvf ${BUILD_DIR}/openvino_developer_package.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_developer_package.tar.gz * popd pushd ${INSTALL_TEST_DIR} - tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_tests.tar.gz * popd - name: Build Debian packages diff --git a/.github/workflows/job_cpu_functional_tests.yml b/.github/workflows/job_cpu_functional_tests.yml index 1ad48695eb5bcb..a0dcd52076cec0 100644 --- a/.github/workflows/job_cpu_functional_tests.yml +++ b/.github/workflows/job_cpu_functional_tests.yml @@ -55,11 +55,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Fetch setup_python action diff --git a/.github/workflows/job_cxx_unit_tests.yml b/.github/workflows/job_cxx_unit_tests.yml index 4e5b7aa342808d..e3b18a6984117b 100644 --- a/.github/workflows/job_cxx_unit_tests.yml +++ b/.github/workflows/job_cxx_unit_tests.yml @@ -64,10 +64,10 @@ jobs: if: ${{ runner.os != 'Windows' }} run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Extract OpenVINO packages (Windows) diff --git a/.github/workflows/job_gpu_tests.yml b/.github/workflows/job_gpu_tests.yml index a4831dd2193f7a..147afcccddfe17 100644 --- a/.github/workflows/job_gpu_tests.yml +++ b/.github/workflows/job_gpu_tests.yml @@ -59,10 +59,10 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Install dependencies (Linux) diff --git a/.github/workflows/job_jax_models_tests.yml b/.github/workflows/job_jax_models_tests.yml index 74dc28078e300f..8f9292d35fb803 100644 --- a/.github/workflows/job_jax_models_tests.yml +++ b/.github/workflows/job_jax_models_tests.yml @@ -64,11 +64,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_TEST_DIR} - tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_tests.tar.gz -C ${INSTALL_DIR} popd - name: Fetch setup_python action diff --git a/.github/workflows/job_onnx_models_tests.yml b/.github/workflows/job_onnx_models_tests.yml index 69fc100890a9f5..ffc4da8ef87b54 100644 --- a/.github/workflows/job_onnx_models_tests.yml +++ b/.github/workflows/job_onnx_models_tests.yml @@ -62,11 +62,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_TEST_DIR} - tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_tests.tar.gz -C ${INSTALL_DIR} popd # Issue 148922 diff --git a/.github/workflows/job_onnx_runtime.yml b/.github/workflows/job_onnx_runtime.yml index b7da6d827d542d..3a7bc4d53ef3b3 100644 --- a/.github/workflows/job_onnx_runtime.yml +++ b/.github/workflows/job_onnx_runtime.yml @@ -60,7 +60,7 @@ jobs: - name: Extract OpenVINO package run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd - name: Clone ONNX Runtime diff --git a/.github/workflows/job_python_unit_tests.yml b/.github/workflows/job_python_unit_tests.yml index 26ee7933d5f3b3..e6ba39fdb3bfe3 100644 --- a/.github/workflows/job_python_unit_tests.yml +++ b/.github/workflows/job_python_unit_tests.yml @@ -66,10 +66,10 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Fetch setup_python action diff --git a/.github/workflows/job_pytorch_layer_tests.yml b/.github/workflows/job_pytorch_layer_tests.yml index 50942cf331ab72..2359bb2d2aea0f 100644 --- a/.github/workflows/job_pytorch_layer_tests.yml +++ b/.github/workflows/job_pytorch_layer_tests.yml @@ -67,10 +67,10 @@ jobs: if: runner.os != 'Windows' run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Extract OpenVINO packages (Windows) diff --git a/.github/workflows/job_pytorch_models_tests.yml b/.github/workflows/job_pytorch_models_tests.yml index 6164bdb29c7d6f..bcbcad872b42e1 100644 --- a/.github/workflows/job_pytorch_models_tests.yml +++ b/.github/workflows/job_pytorch_models_tests.yml @@ -77,11 +77,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_TEST_DIR} - tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_tests.tar.gz -C ${INSTALL_DIR} popd - name: Fetch setup_python action diff --git a/.github/workflows/job_samples_tests.yml b/.github/workflows/job_samples_tests.yml index 0ada0e1557d965..cc314ee93ee876 100644 --- a/.github/workflows/job_samples_tests.yml +++ b/.github/workflows/job_samples_tests.yml @@ -55,10 +55,10 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Install OpenVINO dependencies (mac) diff --git a/.github/workflows/job_tensorflow_layer_tests.yml b/.github/workflows/job_tensorflow_layer_tests.yml index e8d7b51e14c02f..cc9e2781923c33 100644 --- a/.github/workflows/job_tensorflow_layer_tests.yml +++ b/.github/workflows/job_tensorflow_layer_tests.yml @@ -73,10 +73,10 @@ jobs: if: runner.os != 'Windows' run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Extract OpenVINO packages (Windows) diff --git a/.github/workflows/job_tensorflow_models_tests.yml b/.github/workflows/job_tensorflow_models_tests.yml index e9f6f130e0c24e..b2cdf5a6336db0 100644 --- a/.github/workflows/job_tensorflow_models_tests.yml +++ b/.github/workflows/job_tensorflow_models_tests.yml @@ -69,11 +69,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_TEST_DIR} - tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_tests.tar.gz -C ${INSTALL_DIR} popd - name: Fetch setup_python action diff --git a/.github/workflows/job_tokenizers.yml b/.github/workflows/job_tokenizers.yml index fdd0a76088c725..c01c2740201384 100644 --- a/.github/workflows/job_tokenizers.yml +++ b/.github/workflows/job_tokenizers.yml @@ -83,7 +83,7 @@ jobs: if: runner.os != 'Windows' run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd - name: Extract OpenVINO packages (Windows) diff --git a/.github/workflows/linux_conditional_compilation.yml b/.github/workflows/linux_conditional_compilation.yml index f8abe78439dbf6..50f3d2451071a2 100644 --- a/.github/workflows/linux_conditional_compilation.yml +++ b/.github/workflows/linux_conditional_compilation.yml @@ -200,17 +200,17 @@ jobs: - name: Pack Artifacts run: | pushd ${SELECTIVE_BUILD_STAT_DIR} - tar -czvf ${BUILD_DIR}/openvino_selective_build_stat.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_selective_build_stat.tar.gz * popd pushd ${INSTALL_DIR} - tar -czvf ${BUILD_DIR}/openvino_package.tar.gz \ + tar -I pigz -cvf ${BUILD_DIR}/openvino_package.tar.gz \ install_dependencies/install_openvino_dependencies.sh popd cp -v ${OPENVINO_REPO}/temp/tbb/lib/lib* ${INSTALL_TEST_DIR}/tests pushd ${INSTALL_TEST_DIR} - tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz \ + tar -I pigz -cvf ${BUILD_DIR}/openvino_tests.tar.gz \ tests/ov_cpu_func_tests \ tests/libopenvino_template_extension.so \ tests/libze_loader.so* \ @@ -302,7 +302,7 @@ jobs: path: ${{ env.SELECTIVE_BUILD_STAT_DIR }} - name: Extract selective build statistics package - run: tar -xvzf ${SELECTIVE_BUILD_STAT_DIR}/openvino_selective_build_stat.tar.gz -C ${SELECTIVE_BUILD_STAT_DIR} + run: tar -I pigz -xvf ${SELECTIVE_BUILD_STAT_DIR}/openvino_selective_build_stat.tar.gz -C ${SELECTIVE_BUILD_STAT_DIR} # # Build diff --git a/.github/workflows/linux_sanitizers.yml b/.github/workflows/linux_sanitizers.yml index a56bbe54f82b53..5ee3a7ea3dde0b 100644 --- a/.github/workflows/linux_sanitizers.yml +++ b/.github/workflows/linux_sanitizers.yml @@ -175,11 +175,11 @@ jobs: - name: Pack Artifacts run: | pushd ${INSTALL_DIR} - tar -czvf ${BUILD_DIR}/openvino_package.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_package.tar.gz * popd pushd ${INSTALL_TEST_DIR} - tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz * + tar -I pigz -cvf ${BUILD_DIR}/openvino_tests.tar.gz * popd # @@ -257,10 +257,10 @@ jobs: - name: Extract OpenVINO packages run: | pushd $INSTALL_DIR - tar -xzf openvino_package.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_package.tar.gz -C $INSTALL_DIR popd pushd $INSTALL_TEST_DIR - tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR + tar -I pigz -xf openvino_tests.tar.gz -C $INSTALL_DIR popd - name: Install dependencies (Linux) diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 20db9de1776015..e7ed552bed70f5 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -172,11 +172,11 @@ jobs: - name: Pack Artifacts run: | pushd ${{ env.INSTALL_DIR }} - tar -czvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz * + tar -I pigz -cvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz * popd pushd ${{ env.INSTALL_TEST_DIR }} - tar -czvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz * + tar -I pigz -cvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz * popd - name: Cmake & Build - OpenVINO Contrib diff --git a/.github/workflows/mac_arm64.yml b/.github/workflows/mac_arm64.yml index a38179f71fb60c..f2175a0f2926c0 100644 --- a/.github/workflows/mac_arm64.yml +++ b/.github/workflows/mac_arm64.yml @@ -172,11 +172,11 @@ jobs: - name: Pack Artifacts run: | pushd ${{ env.INSTALL_DIR }} - tar -czvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz * + tar -I pigz -cvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz * popd pushd ${{ env.INSTALL_TEST_DIR }} - tar -czvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz * + tar -I pigz -cvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz * popd - name: Cmake & Build - OpenVINO Contrib diff --git a/.github/workflows/ubuntu_22.yml b/.github/workflows/ubuntu_22.yml index 2c20e5136cfc4e..84a93ee93b6164 100644 --- a/.github/workflows/ubuntu_22.yml +++ b/.github/workflows/ubuntu_22.yml @@ -176,10 +176,10 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_TEST_DIR} - tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_tests.tar.gz -C ${INSTALL_DIR} popd - name: Fetch setup_python action @@ -222,7 +222,7 @@ jobs: if: ${{ always() }} run: | pushd ${CONFORMANCE_ARTIFACTS_DIR} - tar -czvf ${CONFORMANCE_ARTIFACTS_DIR}/conformance_artifacts.tar.gz * + tar -I pigz -cvf ${CONFORMANCE_ARTIFACTS_DIR}/conformance_artifacts.tar.gz * popd - name: Upload Conformance Artifacts @@ -248,7 +248,7 @@ jobs: if: ${{ matrix.TEST_TYPE == 'API' }} run: | pushd ${CONFORMANCE_ARTIFACTS_DIR} - tar -czvf ${CONFORMANCE_ARTIFACTS_DIR}/conformance_artifacts.tar.gz * + tar -I pigz -cvf ${CONFORMANCE_ARTIFACTS_DIR}/conformance_artifacts.tar.gz * popd - name: Upload Conformance Artifacts @@ -449,11 +449,11 @@ jobs: - name: Extract OpenVINO packages run: | pushd ${INSTALL_DIR} - tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_package.tar.gz -C ${INSTALL_DIR} popd pushd ${INSTALL_DIR} - tar -xzf openvino_developer_package.tar.gz -C ${INSTALL_DIR} + tar -I pigz -xf openvino_developer_package.tar.gz -C ${INSTALL_DIR} popd - name: Clone OpenVINO Contrib From 4672d2e02a37b47be0c9be9d3788d3061b1aad95 Mon Sep 17 00:00:00 2001 From: Sorin Butnariu Date: Wed, 9 Oct 2024 09:34:37 +0300 Subject: [PATCH 3/9] [ov_integration] Remove incompatible test (#26917) ### Details: - Test OVCompiledModelIncorrectDevice fails when setting DEVICE_ID in PV2 driver. Disabling while investigation ongoing. ### Tickets: - EISW-141263 --- .../behavior/compiled_model/properties.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/intel_npu/tests/functional/shared_tests_instances/behavior/compiled_model/properties.cpp b/src/plugins/intel_npu/tests/functional/shared_tests_instances/behavior/compiled_model/properties.cpp index 8abe86a77c55c2..d5e154a26ac127 100644 --- a/src/plugins/intel_npu/tests/functional/shared_tests_instances/behavior/compiled_model/properties.cpp +++ b/src/plugins/intel_npu/tests/functional/shared_tests_instances/behavior/compiled_model/properties.cpp @@ -233,7 +233,7 @@ INSTANTIATE_TEST_SUITE_P(compatibility_smoke_BehaviorTests, OVClassCompiledModel ::testing::ValuesIn(compiledModelIncorrectConfigs)), ov::test::utils::appendPlatformTypeTestName); -INSTANTIATE_TEST_SUITE_P(compatibility_smoke_BehaviorTests, OVCompiledModelIncorrectDevice, +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelIncorrectDevice, ::testing::Values(ov::test::utils::DEVICE_NPU), ov::test::utils::appendPlatformTypeTestName); From 73e9c6c545c799ee7d114593e83112c94f21b440 Mon Sep 17 00:00:00 2001 From: Alina Kladieva Date: Wed, 9 Oct 2024 10:39:31 +0200 Subject: [PATCH 4/9] [GHA] Automatically choose merge queue base branch in restore artifacts action (#26939) To avoid failures in merge queue like https://github.com/openvinotoolkit/openvino_tokenizers/actions/runs/11218446282/job/31182230856 without setting branch directly via action parameter in a workflow (there is no built-in env var for that unfortunately) --- .github/actions/common/artifact_utils.py | 4 +++- .github/actions/restore_artifacts/action.yml | 1 + .github/actions/store_artifacts/action.yml | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/actions/common/artifact_utils.py b/.github/actions/common/artifact_utils.py index 58c96fbe5dedd6..cbef0e76024b95 100644 --- a/.github/actions/common/artifact_utils.py +++ b/.github/actions/common/artifact_utils.py @@ -9,7 +9,9 @@ def add_common_args(parser: argparse.ArgumentParser): parser.add_argument('-s', '--commit_sha', help='Commit hash for which artifacts were generated', required=True) parser.add_argument('-b', '--branch_name', help='Name of GitHub branch', required=False, - default=os.getenv('GITHUB_BASE_REF') or os.getenv('GITHUB_REF_NAME')) + default=os.getenv('GITHUB_BASE_REF') or + os.getenv('MERGE_QUEUE_BASE_REF').replace('refs/heads/', '') or + os.getenv('GITHUB_REF_NAME')) parser.add_argument('-e', '--event_name', help='Name of GitHub event', required=False, default=os.getenv('GITHUB_EVENT_NAME')) parser.add_argument('--storage_root', help='Root path of the artifacts storage', required=False, diff --git a/.github/actions/restore_artifacts/action.yml b/.github/actions/restore_artifacts/action.yml index efa0dfe87ae28f..df5b857cd93f58 100644 --- a/.github/actions/restore_artifacts/action.yml +++ b/.github/actions/restore_artifacts/action.yml @@ -60,3 +60,4 @@ runs: EVENT_PARAM: "-e ${{ inputs.event_name }}" TO_RESTORE: "-r ${{ inputs.to_restore }}" DEFAULT_TARGET_DIR: "${{ env.GITHUB_WORKSPACE }}/${{ inputs.storage_dir || inputs.platform }}" + MERGE_QUEUE_BASE_REF: "${{ github.event.merge_group.base_ref }}" diff --git a/.github/actions/store_artifacts/action.yml b/.github/actions/store_artifacts/action.yml index 4e50953d8c9874..b652f707b75fcd 100644 --- a/.github/actions/store_artifacts/action.yml +++ b/.github/actions/store_artifacts/action.yml @@ -60,3 +60,4 @@ runs: EVENT_PARAM: "-e ${{ inputs.event_name }}" STORAGE_PARAM: "--storage_dir ${{ inputs.storage_dir }}" PLATFORM_PARAM: "--platform ${{ inputs.platform }}" + MERGE_QUEUE_BASE_REF: "" From 8517c361dd236663aabf7b6a15cc8c50c5cf5580 Mon Sep 17 00:00:00 2001 From: Piotr Kowalczyk Date: Wed, 9 Oct 2024 11:25:01 +0200 Subject: [PATCH 5/9] [Op]: Added SearchSorted op def. (#26904) ### Details: - Added SearchSorted op def with unittests. ### Tickets: - *CVS-154141* NOTE: Depends on https://github.com/openvinotoolkit/openvino/pull/26887 --------- Co-authored-by: Michal Lukaszewski Co-authored-by: Pawel Raasz --- src/core/include/openvino/op/ops.hpp | 1 + .../include/openvino/op/search_sorted.hpp | 46 +++++++++ .../include/search_sorted_shape_inference.hpp | 35 +++++++ src/core/src/op/search_sorted.cpp | 66 +++++++++++++ src/core/tests/type_prop/search_sorted.cpp | 94 +++++++++++++++++++ src/core/tests/visitors/op/sorted_search.cpp | 30 ++++++ 6 files changed, 272 insertions(+) create mode 100644 src/core/include/openvino/op/search_sorted.hpp create mode 100644 src/core/shape_inference/include/search_sorted_shape_inference.hpp create mode 100644 src/core/src/op/search_sorted.cpp create mode 100644 src/core/tests/type_prop/search_sorted.cpp create mode 100644 src/core/tests/visitors/op/sorted_search.cpp diff --git a/src/core/include/openvino/op/ops.hpp b/src/core/include/openvino/op/ops.hpp index 9ba694963248ad..135167fe11ed5f 100644 --- a/src/core/include/openvino/op/ops.hpp +++ b/src/core/include/openvino/op/ops.hpp @@ -169,6 +169,7 @@ #include "openvino/op/scatter_elements_update.hpp" #include "openvino/op/scatter_nd_update.hpp" #include "openvino/op/scatter_update.hpp" +#include "openvino/op/search_sorted.hpp" #include "openvino/op/select.hpp" #include "openvino/op/selu.hpp" #include "openvino/op/shape_of.hpp" diff --git a/src/core/include/openvino/op/search_sorted.hpp b/src/core/include/openvino/op/search_sorted.hpp new file mode 100644 index 00000000000000..78650942ee8f0f --- /dev/null +++ b/src/core/include/openvino/op/search_sorted.hpp @@ -0,0 +1,46 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/op/op.hpp" + +namespace ov { +namespace op { +namespace v15 { +/// \brief SearchSorted operation. +/// +/// \ingroup ov_ops_cpp_api +class OPENVINO_API SearchSorted : public Op { +public: + OPENVINO_OP("SearchSorted", "opset15", Op); + + SearchSorted() = default; + /// \brief Constructs a SearchSorted operation. + /// \param sorted_sequence Sorted sequence to search in. + /// \param values Values to search indexs for. + /// \param right_mode If False, return the first suitable index that is found for given value. If True, return + /// the last such index. + SearchSorted(const Output& sorted_sequence, const Output& values, bool right_mode = false); + + void validate_and_infer_types() override; + bool visit_attributes(AttributeVisitor& visitor) override; + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + bool get_right_mode() const { + return m_right_mode; + } + + void set_right_mode(bool right_mode) { + m_right_mode = right_mode; + } + + bool validate() const; + +private: + bool m_right_mode{}; +}; +} // namespace v15 +} // namespace op +} // namespace ov diff --git a/src/core/shape_inference/include/search_sorted_shape_inference.hpp b/src/core/shape_inference/include/search_sorted_shape_inference.hpp new file mode 100644 index 00000000000000..da417f54121ee4 --- /dev/null +++ b/src/core/shape_inference/include/search_sorted_shape_inference.hpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/op/search_sorted.hpp" +#include "utils.hpp" + +namespace ov { +namespace op { +namespace v15 { +template > +std::vector shape_infer(const SearchSorted* op, const std::vector& input_shapes) { + // [HACK]: By convention, shape_infer should also perform node validation.. + op->validate(); + const auto& sorted_shape = input_shapes[0]; + const auto& values_shape = input_shapes[1]; + auto output_shape = values_shape; + TShape::merge_into(output_shape, sorted_shape); + + if (output_shape.rank().is_static()) { + auto last_it = output_shape.end() - 1; + if (values_shape.rank().is_static()) { + *last_it = *(input_shapes[1].end() - 1); + } else { + *last_it = Dimension::dynamic(); + } + } + + return {std::move(output_shape)}; +} +} // namespace v15 +} // namespace op +} // namespace ov diff --git a/src/core/src/op/search_sorted.cpp b/src/core/src/op/search_sorted.cpp new file mode 100644 index 00000000000000..df179d925d054a --- /dev/null +++ b/src/core/src/op/search_sorted.cpp @@ -0,0 +1,66 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "itt.hpp" +#include "openvino/core/validation_util.hpp" +#include "search_sorted_shape_inference.hpp" + +namespace ov { +namespace op { +namespace v15 { + +SearchSorted::SearchSorted(const Output& sorted_sequence, const Output& values, bool right_mode) + : Op({sorted_sequence, values}), + m_right_mode(right_mode) { + constructor_validate_and_infer_types(); +} + +bool SearchSorted::validate() const { + NODE_VALIDATION_CHECK(this, get_input_size() == 2); + NODE_VALIDATION_CHECK(this, + get_input_element_type(0) == get_input_element_type(1), + "Sorted sequence and values must have the same element type."); + + const auto& sorted_shape = get_input_partial_shape(0); + const auto& values_shape = get_input_partial_shape(1); + + if (sorted_shape.rank().is_static() && values_shape.rank().is_static() && sorted_shape.rank().get_length() > 1) { + NODE_VALIDATION_CHECK(this, + sorted_shape.rank().get_length() == values_shape.rank().get_length(), + "Sorted sequence and values have different ranks."); + + for (int64_t i = 0; i < sorted_shape.rank().get_length() - 1; ++i) { + NODE_VALIDATION_CHECK(this, + sorted_shape[i].compatible(values_shape[i]), + "Sorted sequence and values has different ", + i, + " dimension."); + } + } + + return true; +} + +void SearchSorted::validate_and_infer_types() { + OV_OP_SCOPE(v15_SearchSorted_validate_and_infer_types); + const auto& output_shapes = shape_infer(this, ov::util::get_node_input_partial_shapes(*this)); + set_output_type(0, ov::element::i64, output_shapes[0]); +} + +bool SearchSorted::visit_attributes(AttributeVisitor& visitor) { + OV_OP_SCOPE(v15_SearchSorted_visit_attributes); + visitor.on_attribute("right_mode", m_right_mode); + return true; +} + +std::shared_ptr SearchSorted::clone_with_new_inputs(const OutputVector& new_args) const { + OV_OP_SCOPE(v15_SearchSorted_clone_with_new_inputs); + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0), new_args.at(1), get_right_mode()); +} +} // namespace v15 +} // namespace op +} // namespace ov \ No newline at end of file diff --git a/src/core/tests/type_prop/search_sorted.cpp b/src/core/tests/type_prop/search_sorted.cpp new file mode 100644 index 00000000000000..12af514038ec24 --- /dev/null +++ b/src/core/tests/type_prop/search_sorted.cpp @@ -0,0 +1,94 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "openvino/op/search_sorted.hpp" + +#include "common_test_utils/test_assertions.hpp" +#include "common_test_utils/type_prop.hpp" + +using namespace std; +using namespace ov; + +#define EXPECT_THROW_SUBSTRING(SORTED, VALUES, SUBSTRING) \ + OV_EXPECT_THROW_HAS_SUBSTRING(std::ignore = make_shared(SORTED, VALUES), \ + NodeValidationFailure, \ + SUBSTRING); + +static void PerformShapeTest(const PartialShape& sorted_shape, + const PartialShape& values_shape, + const PartialShape& expected_output_shape) { + auto sorted = make_shared(element::i32, sorted_shape); + auto values = make_shared(element::i32, values_shape); + auto search_sorted_op = make_shared(sorted, values); + EXPECT_EQ(search_sorted_op->get_element_type(), element::i64); + EXPECT_EQ(search_sorted_op->get_output_partial_shape(0), expected_output_shape); +} + +TEST(type_prop, search_sorted_shape_infer_equal_inputs) { + PerformShapeTest({1, 3, 6}, {1, 3, 6}, {1, 3, 6}); +} + +TEST(type_prop, search_sorted_shape_infer_sorted_dynamic) { + PerformShapeTest(PartialShape::dynamic(), {1, 3, 6}, {1, 3, 6}); +} + +TEST(type_prop, search_sorted_shape_infer_values_dynamic) { + PerformShapeTest({1, 3, 7, 5}, PartialShape::dynamic(), {1, 3, 7, -1}); +} + +TEST(type_prop, search_sorted_shape_infer_different_last_dim) { + PerformShapeTest({1, 3, 7, 100}, {1, 3, 7, 10}, {1, 3, 7, 10}); +} + +TEST(type_prop, search_sorted_shape_infer_sorted_1d) { + PerformShapeTest({5}, {2, 3}, {2, 3}); +} + +TEST(type_prop, search_sorted_shape_infer_sorted_and_values_1d) { + PerformShapeTest({5}, {20}, {20}); +} + +TEST(type_prop, search_sorted_shape_infer_sorted_1d_values_dynamic) { + PerformShapeTest({8}, {-1, -1, 3}, {-1, -1, 3}); +} + +TEST(type_prop, search_sorted_shape_infer_both_dynamic_1) { + PerformShapeTest({1, -1, 7, -1}, {-1, 3, -1, 10}, {1, 3, 7, 10}); +} + +TEST(type_prop, search_sorted_shape_infer_both_dynamic_2) { + PerformShapeTest({1, -1, 7, 50}, {-1, 3, -1, -1}, {1, 3, 7, -1}); +} + +TEST(type_prop, search_sorted_shape_infer_both_dynamic_3) { + PerformShapeTest(PartialShape::dynamic(), PartialShape::dynamic(), PartialShape::dynamic()); +} + +TEST(type_prop, search_sorted_shape_infer_both_dynamic_4) { + PerformShapeTest({-1, -1, 50}, {-1, -1, 20}, {-1, -1, 20}); +} + +TEST(type_prop, search_sorted_shape_infer_both_dynamic_5) { + PerformShapeTest({-1}, {-1, -1, 3}, {-1, -1, 3}); +} + +TEST(type_prop, search_sorted_shape_infer_different_types) { + auto sorted = make_shared(element::f32, Shape{1, 3, 6}); + auto values = make_shared(element::i32, Shape{1, 3, 6}); + EXPECT_THROW_SUBSTRING(values, sorted, std::string("must have the same element type")); +} + +TEST(type_prop, search_sorted_shape_infer_wrong_rank) { + auto sorted = make_shared(element::i32, Shape{1, 1, 3, 6}); + auto values = make_shared(element::i32, Shape{1, 3, 6}); + EXPECT_THROW_SUBSTRING(sorted, values, std::string("Sorted sequence and values have different ranks")); +} + +TEST(type_prop, search_sorted_shape_infer_wrong_dim) { + auto sorted = make_shared(element::i32, Shape{1, 1, 3, 6}); + auto values = make_shared(element::i32, Shape{1, 1, 5, 6}); + EXPECT_THROW_SUBSTRING(sorted, values, std::string(" different 2 dimension.")); +} + +#undef EXPECT_THROW_SUBSTRING \ No newline at end of file diff --git a/src/core/tests/visitors/op/sorted_search.cpp b/src/core/tests/visitors/op/sorted_search.cpp new file mode 100644 index 00000000000000..860c9528d0e9aa --- /dev/null +++ b/src/core/tests/visitors/op/sorted_search.cpp @@ -0,0 +1,30 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "openvino/op/search_sorted.hpp" +#include "visitors/visitors.hpp" + +using namespace std; +using namespace ov; +using ov::test::NodeBuilder; + +TEST(attributes, search_sorted_op) { + using TOp = ov::op::v15::SearchSorted; + NodeBuilder::opset().insert(); + auto sorted = make_shared(element::i32, Shape{2, 3, 50, 50}); + auto values = make_shared(element::i32, Shape{2, 3, 50, 50}); + + auto op = make_shared(sorted, values); + NodeBuilder builder(op, {sorted, values}); + auto g_op = ov::as_type_ptr(builder.create()); + + // attribute count + const auto expected_attr_count = 1; + EXPECT_EQ(builder.get_value_map_size(), expected_attr_count); + + // space_to_depth attributes + EXPECT_EQ(g_op->get_right_mode(), op->get_right_mode()); +} From 5a9248532fc3a3563c0aada102179134065858a3 Mon Sep 17 00:00:00 2001 From: Dmitry Matveev Date: Wed, 9 Oct 2024 11:09:15 +0100 Subject: [PATCH 6/9] NPUW: Fix DCOFF patterns and handling for NNCF 2.12's GPTQs (#26955) ### Details: - *item1* - *...* ### Tickets: - *ticket-id* --- .../npuw/partitioning/patterns/dcoff.cpp | 40 ++--- .../intel_npu/src/plugin/npuw/util.cpp | 144 ++++++++++++++++-- 2 files changed, 143 insertions(+), 41 deletions(-) diff --git a/src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns/dcoff.cpp b/src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns/dcoff.cpp index ffbece94b04176..4928be783317fd 100644 --- a/src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns/dcoff.cpp +++ b/src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns/dcoff.cpp @@ -619,7 +619,7 @@ DCOFFPassReshape3::DCOFFPassReshape3(DCOffMode dcoff_mode, ov::element::Type dco register_matcher(std::make_shared(cvt, "TagDCOFFPassReshape3"), std::move(callback)); } -// Pattern: i4 Phi-3 4SymW16A +// Pattern: i4 group-quant // // // "tensor" "scale" > "tensor" @@ -627,12 +627,12 @@ DCOFFPassReshape3::DCOFFPassReshape3(DCOffMode dcoff_mode, ov::element::Type dco // i4 f16|f32 > f16 // : : > : // V : > V -// Convert : > Convert -// f16|f32 : > f32 -// : : > -// V V > -// Multiply > -// f16|f32 > +// Convert : > [ Convert] +// f16|f32 : > [ f32 ] +// : : > : +// V V > V +// Multiply > Reshape +// f16|f32 > f16|f32 // : > // : > // Reshape > @@ -657,6 +657,8 @@ DCOFFPassReshape4::DCOFFPassReshape4(DCOffMode dcoff_mode, ov::element::Type dco auto matched_paramA = std::static_pointer_cast(matched_nodeA); auto matched_paramC = std::static_pointer_cast(matched_nodeC); + auto matched_out_mulply = node_to_output.at(mulply); + if (ov::element::i4 == matched_paramA->get_element_type() && (ov::element::f16 == matched_paramC->get_element_type() || ov::element::f32 == matched_paramC->get_element_type())) { @@ -669,31 +671,17 @@ DCOFFPassReshape4::DCOFFPassReshape4(DCOffMode dcoff_mode, ov::element::Type dco LOG_DEBUG("Matched: " << matched_paramC << " - parameter to remove..."); LOG_BLOCK(); - // Extra transformation here: - // - remove Multiply + Intermediate Convert - // - mark paramC for removal. - // Convert will be reconnected to paramA directly. - // Record mapping from the Scale coeff parameter to the Real weight parameter pref.get().scales[matched_paramC] = matched_paramA; - // Disconnect Multiply and Convert from their outputs - auto matched_mulply = node_to_output.at(mulply).get_node_shared_ptr(); - auto matched_convrt = node_to_output.at(cvtA).get_node_shared_ptr(); - auto drop_outputs = [](std::shared_ptr node) { - for (auto&& node_outputs : node->outputs()) { - for (auto&& node_reader_port : node_outputs.get_target_inputs()) { - node_outputs.remove_target_input(node_reader_port); - } - } - }; - LOG_DEBUG("Dropping the connections..."); - drop_outputs(matched_mulply); - drop_outputs(matched_convrt); + std::shared_ptr new_rshp_in = matched_paramA; + if (matched_out_mulply.get_element_type() == ov::element::f32) { + new_rshp_in = std::make_shared(matched_paramA, ov::element::f32); + } LOG_DEBUG("Reconnecting the Root..."); auto matched_reshape = node_to_output.at(reshape).get_node_shared_ptr(); - matched_reshape->input(0).replace_source_output(matched_paramA); + matched_reshape->input(0).replace_source_output(new_rshp_in); } LOG_DEBUG("Done"); } diff --git a/src/plugins/intel_npu/src/plugin/npuw/util.cpp b/src/plugins/intel_npu/src/plugin/npuw/util.cpp index abb7e5841a95b7..d83a521fb29496 100644 --- a/src/plugins/intel_npu/src/plugin/npuw/util.cpp +++ b/src/plugins/intel_npu/src/plugin/npuw/util.cpp @@ -644,6 +644,115 @@ void unpack_i4f16(const ov::SoPtr& from, } } +void unpack_i4f16_z(const ov::SoPtr& from, + const ov::SoPtr& scale, + const ov::SoPtr& to, + const ov::npuw::util::UnpackOptions& unpack_options) { + NPUW_ASSERT(from->is_continuous()); + NPUW_ASSERT(scale->is_continuous()); + NPUW_ASSERT(to->is_continuous()); + NPUW_ASSERT(from->get_size() == to->get_size()); + + const auto& from_shape = from->get_shape(); + NPUW_ASSERT(from_shape.back() % 64 == 0); + + const auto& scale_shape = scale->get_shape(); + NPUW_ASSERT(scale_shape.size() == 3); + NPUW_ASSERT(scale_shape[0] == from_shape[0]); + NPUW_ASSERT(scale_shape[2] == from_shape[2]); + NPUW_ASSERT(scale_shape[1] == 1); + + const auto scale_elem_type = scale->get_element_type(); + NPUW_ASSERT(scale_elem_type == ov::element::f32); + + // This conversion combines i4tof32 and f32tof16. Here we + // - read 256 bits (= 32 bytes, = 64 u4 elements) + // - write 1024 bits (= 128 bytes, = 64 f16 elements) + // per every iteration, what translates to (from->size() / 64) iterations + + const size_t C = from_shape[from_shape.size() - 3]; + const size_t H = from_shape[from_shape.size() - 2]; + const size_t W = from_shape[from_shape.size() - 1]; + + const int8_t* const pSrc = static_cast(from->data()); // 2 x i4 elements + const float* const pScl = static_cast(scale->data()); // 1 x f32 element + int16_t* pDst = static_cast(to->data()); // 1 x f16 element + + auto unpack_body = [&](size_t job_index, size_t stride) { + size_t start_c = job_index * stride; + size_t end_c = std::min(C, start_c + stride); + + for (size_t c = start_c; c < end_c; ++c) { + for (size_t h = 0; h < H; ++h) { + for (size_t w = 0; w < W; w += 64) { + const int8_t* pSrc_iter = pSrc + (w + W * h + W * H * c) / 2; + __m256i vinput = _mm256_lddqu_si256(reinterpret_cast(pSrc_iter)); + __m256i vout0, vout1; + avx2_i4toi8(vinput, &vout0, &vout1); + int8_t tmp[64]; // FIXME: Avoid it + __m256i* tmpv0 = reinterpret_cast<__m256i*>(tmp); + __m256i* tmpv1 = reinterpret_cast<__m256i*>(tmp + 32); + _mm256_storeu_si256(tmpv0, vout0); + _mm256_storeu_si256(tmpv1, vout1); + __m128i i8vecs[8] = { + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 8)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 16)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 24)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 32)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 40)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 48)), + _mm_loadl_epi64(reinterpret_cast<__m128i*>(tmp + 56)), + }; + + const float* pScl_iter = pScl + w + W * c; + __m256 svalVec[8]; + for (int i = 0; i < 8; ++i) { + svalVec[i] = _mm256_loadu_ps(pScl_iter + i * 8); + } + + __m128i vresults[8] = {avx2_i8tof16(i8vecs[0], svalVec[0]), + avx2_i8tof16(i8vecs[1], svalVec[1]), + avx2_i8tof16(i8vecs[2], svalVec[2]), + avx2_i8tof16(i8vecs[3], svalVec[3]), + avx2_i8tof16(i8vecs[4], svalVec[4]), + avx2_i8tof16(i8vecs[5], svalVec[5]), + avx2_i8tof16(i8vecs[6], svalVec[6]), + avx2_i8tof16(i8vecs[7], svalVec[7])}; + + int16_t* pDst_iter = pDst + w + W * h + W * H * c; + for (int i = 0; i < 8; ++i) { + _mm_storeu_si128(reinterpret_cast<__m128i*>(pDst_iter + i * 8), vresults[i]); + } + } + } + } + }; + + size_t stride = C; + size_t num_jobs = 1; + + if (unpack_options.nPartitions) { + if (unpack_options.bStrictPartitioning) { + stride = (C + unpack_options.nPartitions - 1) / unpack_options.nPartitions; + num_jobs = unpack_options.nPartitions; + } else { + stride = std::max(1, C / unpack_options.nPartitions); + num_jobs = (C + stride - 1) / stride; + } + } + + if (unpack_options.bUseOvParallelFor) { + ov::parallel_for(num_jobs, [&](size_t job_index) { + unpack_body(job_index, stride); + }); + } else { + for (size_t job_index = 0; job_index < num_jobs; ++job_index) { + unpack_body(job_index, stride); + } + } +} + void unpack_u4f16(const ov::SoPtr& from, const ov::SoPtr& to, const ov::npuw::util::UnpackOptions& unpack_options) { @@ -1328,22 +1437,27 @@ void ov::npuw::util::unpack(const ov::SoPtr& from, // This is in fact a weight decompression procedure const auto type_from = from->get_element_type(); const auto type_to = to->get_element_type(); - namespace ove = ov::element; -#define CAST(x) static_cast((x).operator ove::Type_t()) -#define PAIR(f, t) (CAST(f) << 16 | CAST(t)) -#define HNDL(f, t) \ - case PAIR(ove::f, ove::t): \ - unpack_##f##t(from, scale, to, unpack_options); \ - break; - switch (PAIR(type_from, type_to)) { - HNDL(i4, f16); - HNDL(i8, f16); - default: - OPENVINO_THROW("Unknown unpack/scale combination ", type_from, " -> ", type_to); + NPUW_ASSERT(type_to == ov::element::f16); + + const auto& from_shape = from->get_shape(); + const auto& scale_shape = scale->get_shape(); + + if (type_from == ov::element::i4) { + if (from_shape.size() == 3) { + if (scale_shape[2] == from_shape[2]) { + unpack_i4f16_z(from, scale, to, unpack_options); + } else { + unpack_i4f16(from, scale, to, unpack_options); + } + } else { + NPUW_ASSERT(from_shape.size() == 2); + unpack_i4f16(from, scale, to, unpack_options); + } + } else if (type_from == ov::element::i8) { + unpack_i8f16(from, scale, to, unpack_options); + } else { + NPUW_ASSERT(false && "Unsupported combination"); } -#undef HNDL -#undef PAIR -#undef CAST } void ov::npuw::util::unpack(const ov::SoPtr& from, From 37957c9d33c5c9a258b43520c8f1682ea7d65d5b Mon Sep 17 00:00:00 2001 From: Pavel Durandin Date: Wed, 9 Oct 2024 15:08:27 +0400 Subject: [PATCH 7/9] [GPU] Fix unit tests ph5 (#26911) ### Details: - Fix unit tests, phase5 --- .../unit/test_cases/eltwise_gpu_test.cpp | 30 +++++++++---------- .../test_cases/fully_connected_gpu_test.cpp | 12 ++++---- .../unit/test_cases/quantize_gpu_test.cpp | 14 ++++----- .../tests/unit/test_cases/reduce_gpu_test.cpp | 2 +- .../test_cases/strided_slice_gpu_test.cpp | 6 ++-- .../tests/unit/test_cases/tile_gpu_test.cpp | 2 +- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/eltwise_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/eltwise_gpu_test.cpp index 5f2f5a6bbfe7d2..8d67bc3f7db2ad 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/eltwise_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/eltwise_gpu_test.cpp @@ -366,21 +366,21 @@ void run_eltwise_int_bitwise_generic_test(cldnn::eltwise_mode mode) { cldnn::format test_inputs_fmt = cldnn::format::bfyx; const int dim_size = 227; -#define ELTWISE_INT_TEST_CASES(type) \ - generic_eltwise_int_test(test_inputs_fmt, \ - 1, \ - 1, \ - dim_size, \ - dim_size, \ - mode, \ - 0, \ - 0, \ - 0, \ - 0, \ - 0, \ - static_cast(std::numeric_limits::max()), \ - 0, \ - static_cast(std::numeric_limits::max())); +#define ELTWISE_INT_TEST_CASES(type) \ + generic_eltwise_int_test(test_inputs_fmt, \ + 1, \ + 1, \ + dim_size, \ + dim_size, \ + mode, \ + 0, \ + 0, \ + 0, \ + 0, \ + 0, \ + static_cast(std::numeric_limits::max())/16,\ + 0, \ + static_cast(std::numeric_limits::max())/16); ELTWISE_INT_TEST_CASES(int8_t); ELTWISE_INT_TEST_CASES(uint8_t); diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/fully_connected_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/fully_connected_gpu_test.cpp index 603f3329c43620..a485d7017c2478 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/fully_connected_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/fully_connected_gpu_test.cpp @@ -1420,7 +1420,7 @@ class fully_connected_gpu_tests: public ::testing::Test { auto scale_mem = engine.allocate_memory({ {ofm_num, ifm_num / scales_group_size}, data_types::f16, format::bfyx }); auto dcomp_zp_mem = engine.allocate_memory({ {1, 1, 1, 1}, data_types::u8, format::bfyx }); - set_values(dcomp_zp_mem, {8}); + set_values(dcomp_zp_mem, {8}); auto input_data = rg.generate_random_1d(batch_num * ifm_num, -2.0f, 2.0f); set_values(input_mem, input_data); @@ -1528,7 +1528,7 @@ class fully_connected_gpu_tests: public ::testing::Test { auto scale_mem = engine.allocate_memory({ {ofm_num, ifm_num / scales_group_size}, data_types::f16, format::bfyx }); auto dcomp_zp_mem = engine.allocate_memory({ {1, 1, 1, 1}, data_types::u8, format::bfyx }); - set_values(dcomp_zp_mem, {8}); + set_values(dcomp_zp_mem, {8}); auto input_data = rg.generate_random_1d(batch_num * ifm_num, -1.0f, 1.0f); set_values(input_mem, input_data); @@ -1698,7 +1698,7 @@ class fully_connected_gpu_tests: public ::testing::Test { auto scale_mem = engine.allocate_memory({ {ofm_num, ifm_num / scales_group_size}, data_types::f16, format::bfyx }); auto dcomp_zp_mem = engine.allocate_memory({ {1, 1, 1, 1}, data_types::u8, format::bfyx }); - set_values(dcomp_zp_mem, {8}); + set_values(dcomp_zp_mem, {8}); auto input_data = rg.generate_random_1d(batch_num * ifm_num, -2.0f, 2.0f); set_values(input_mem, input_data); @@ -1804,7 +1804,7 @@ class fully_connected_gpu_tests: public ::testing::Test { auto scale_mem = engine.allocate_memory({ {32, 1}, data_types::f32, format::bfyx }); auto zp_mem = engine.allocate_memory({ {32, 1}, data_types::f32, format::bfyx }); - set_values(input_mem, { -0.5f, 2.0f, 0.5f, 1.0f }); + set_values(input_mem, { -0.5f, 2.0f}); set_values(weights_mem, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 15, 14, 13, 12, 11, 10, 9, 8, @@ -2085,7 +2085,7 @@ class fully_connected_gpu_tests: public ::testing::Test { auto scale_mem = engine.allocate_memory({ { ofm_num, 1 }, data_types::f16, format::bfyx }); auto dcomp_zp_mem = engine.allocate_memory({ {1, 1, 1, 1}, data_types::u8, format::bfyx }); - set_values(dcomp_zp_mem, {8}); + set_values(dcomp_zp_mem, {8}); set_values(input_mem, { -0.5f, 2.0f, 0.5f, 1.0f, 0.5f, 2.0f }); set_values(weights_mem, { 0, 1, 2, 3, 4, 5, @@ -3605,7 +3605,7 @@ TEST(fully_connected_3d_onednn_gpu, compressed_int4_scale_static) { auto scale_mem = engine.allocate_memory({ {ofm_num, ifm_num / scales_group_size, 1, 1}, data_types::f16, format::bfyx }); auto dcomp_zp_mem = engine.allocate_memory({ {1, 1, 1, 1}, data_types::u8, format::bfyx }); - set_values(dcomp_zp_mem, {8}); + set_values(dcomp_zp_mem, {8}); auto input_data = rg.generate_random_1d(batch_num * ifm_num, -2.0f, 2.0f); set_values(input_mem, input_data); diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/quantize_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/quantize_gpu_test.cpp index 42dbfa10903f6b..bb44a1022f368d 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/quantize_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/quantize_gpu_test.cpp @@ -572,7 +572,7 @@ TEST(quantize_gpu, eltwise_quantize_fs_b_yx_fsv32) { auto output_low = engine.allocate_memory({ data_types::f32,format::bfyx,{ 1, 1, 1, 1 } }); auto output_high = engine.allocate_memory({ data_types::f32,format::bfyx,{ 1, 1, 1, 1 } }); - set_values(input, { -1.0f, 2.0f, 3.0f, 4.0f, + set_values(input, {-1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 2.0f, 2.0f, 3.0f, 4.0f, 6.0f, 3.0f, 3.0f, 3.0f, 5.0f, 1.0f, 1.0f, @@ -603,12 +603,12 @@ TEST(quantize_gpu, eltwise_quantize_fs_b_yx_fsv32) { set_values(output_low, { -1.0f }); set_values(output_high, { 1.0f }); - std::vector ref_data = { -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1 }; + std::vector ref_data = { 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, + 1, 1, -1, 1, 1, -1, -1, -1, 1, 1, 1, 1, + 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, + 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1, 1, + 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, + -1, -1, -1, 1 }; topology.add( input_layout("input1", in_layout), diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/reduce_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/reduce_gpu_test.cpp index a0e1d307e373c0..385226ad7eb11f 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/reduce_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/reduce_gpu_test.cpp @@ -1834,7 +1834,7 @@ TEST(reduce_gpu, reduce_min_max_default_output_element_type_should_be_same_to_in auto& engine = get_test_engine(); auto input = engine.allocate_memory({data_types::i8, format::bfyx, {1, 1, 2, 2}}); - set_values(input, {1, 1, 1, 1}); + set_values(input, {1, 1, 1, 1}); topology topology1( input_layout("input", input->get_layout()), diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/strided_slice_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/strided_slice_gpu_test.cpp index ad62e51b3be7c8..8937d75e7b185e 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/strided_slice_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/strided_slice_gpu_test.cpp @@ -24,9 +24,9 @@ class strided_slice_gpu: public ::testing::Test { auto& engine = get_test_engine(); auto input = engine.allocate_memory({ ov::PartialShape{ 2, 2, 2, 2 }, data_types::f32, format::bfyx }); - auto begin = engine.allocate_memory({ ov::PartialShape{ 3 }, data_types::i64, format::bfyx }); - auto end = engine.allocate_memory({ ov::PartialShape{ 3 }, data_types::i64, format::bfyx }); - auto strides = engine.allocate_memory({ ov::PartialShape{ 3 }, data_types::i64, format::bfyx }); + auto begin = engine.allocate_memory({ ov::PartialShape{ 4 }, data_types::i64, format::bfyx }); + auto end = engine.allocate_memory({ ov::PartialShape{ 4 }, data_types::i64, format::bfyx }); + auto strides = engine.allocate_memory({ ov::PartialShape{ 4 }, data_types::i64, format::bfyx }); set_values(input, { -0.2f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/tile_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/tile_gpu_test.cpp index 051bb15cf90700..cbc2ee19dfa006 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/tile_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/tile_gpu_test.cpp @@ -259,7 +259,7 @@ class tile_gpu: public ::testing::Test { auto config = get_test_default_config(engine); if (impl_type != impl_types::any) - config.set_property(ov::intel_gpu::force_implementations(ov::intel_gpu::ImplForcingMap{ {"tile", {format::bfyx, "", impl_types::cpu}} })); + config.set_property(ov::intel_gpu::force_implementations(ov::intel_gpu::ImplForcingMap{ {"tile", {format::bfzyx, "", impl_types::cpu}} })); cldnn::network::ptr network = get_network(engine, topology, config, get_test_stream_ptr(), is_caching_test); network->set_input_data("input", input); From 168c1e507b99fb4d5ad55a140165217487d6d3c1 Mon Sep 17 00:00:00 2001 From: Andrzej Kopytko Date: Wed, 9 Oct 2024 14:41:43 +0200 Subject: [PATCH 8/9] QF Sitemap Url wrapper (#26971) ### Details: - *item1* - *...* ### Tickets: - *ticket-id* --- .../openvino_custom_sphinx_sitemap/__init__.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/openvino_custom_sphinx_sitemap/openvino_custom_sphinx_sitemap/__init__.py b/docs/openvino_custom_sphinx_sitemap/openvino_custom_sphinx_sitemap/__init__.py index 586d6eeeeaf783..bb26683cd9e579 100644 --- a/docs/openvino_custom_sphinx_sitemap/openvino_custom_sphinx_sitemap/__init__.py +++ b/docs/openvino_custom_sphinx_sitemap/openvino_custom_sphinx_sitemap/__init__.py @@ -72,8 +72,6 @@ def create_sitemap(app, exception): else: version = "" - url = ET.SubElement(root, "url") - scheme = app.config.sitemap_url_scheme unique_links = set() while True: try: @@ -84,11 +82,14 @@ def create_sitemap(app, exception): except queue.Empty: break + url = ET.SubElement(root, "url") + if app.builder.config.language: lang = app.builder.config.language + "/" else: lang = "" - + + scheme = app.config.sitemap_url_scheme ET.SubElement(url, "loc").text = site_url + scheme.format( lang=lang, version=version, link=link ) @@ -129,5 +130,5 @@ def process_coveo_meta(meta, url, link): def process_link(link): if '/' in link: - return link.split('/')[0] - return link.split('.html')[0] \ No newline at end of file + return link.split('/')[0].replace("-", " ") + return link.split('.html')[0].replace("-", " ") \ No newline at end of file From 46736bc010bbceadf37a6511105654dc913139e1 Mon Sep 17 00:00:00 2001 From: Alina Kladieva Date: Wed, 9 Oct 2024 15:58:27 +0200 Subject: [PATCH 9/9] [GHA] Pin upload-artifact version in provider (#26970) 4.4.1 breaks symlinks handling causing uploaded OV archives to be corrupted --- .github/actions/openvino_provider/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/openvino_provider/action.yml b/.github/actions/openvino_provider/action.yml index 8cc865c5f5b461..131abb59b5e252 100644 --- a/.github/actions/openvino_provider/action.yml +++ b/.github/actions/openvino_provider/action.yml @@ -145,7 +145,7 @@ runs: - name: Upload commit OpenVINO archives if: steps.openvino_commit_download.outcome == 'success' && !inputs.install_dir - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: ${{ steps.openvino_commit_output.outputs.ov_artifact_name }} path: ${{ steps.openvino_commit_output.outputs.ov_package_path }} @@ -188,7 +188,7 @@ runs: - name: Upload OpenVINO archives if: steps.openvino_s3_download.outcome == 'success' && !inputs.install_dir - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: ${{ steps.openvino_s3_download.outputs.ov_artifact_name }} path: ${{ steps.openvino_s3_download.outputs.ov_package_path }}